怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion

#工作记录

一、前言

嵌套虚拟环境本来是不建议的一种方法,这种嵌套虚拟环境的使用有一定特殊性,但在一些特别的使用场景下,嵌套虚拟环境的使用非常有用。

二、嵌套虚拟环境:

(一)conda嵌套virtualenv

该嵌套环境本质上是操作conda的base环境。如果需要这种嵌套,请切换到其他环境进行操作。

(一)virtualenv嵌套conda

该嵌套环境本质上是操作.venv本地虚拟环境。

(三)其他

其他嵌套环境暂不在此记录

(四)注意:

以下记录所属平台为Windows11 X64位系统,intel处理器,NVIDIA显卡,DDR5内存。

不同平台可能嵌套虚拟环境的实现机制不一样,实现嵌套的软件也会不一样。但原理可供参考。

三、使用举例

(一)conda嵌套virtualenv

conda嵌套virtualenv比较容易实现,需要用经过conda初始化的powershell终端导航到项目本地目录,该本地目录需要有一个virtualenv虚拟环境(.venv)。

用powershell激活相关conda虚拟环境后再激活本地virtualenv虚拟环境(.venv)就能实现

复制代码
为您的终端初始化 conda:
conda init --all

#激活conda虚拟环境
conda activate 环境名

#激活virtualenv虚拟环境(.venv)
.venv\Scripts\activate

(二)virtualenv嵌套conda

virtualenv嵌套conda比较不好实现,需要用未经过conda初始化的powershell终端(最好使用powershell预览版,它支持更多更新的功能)导航到项目本地目录,该本地目录需要有一个virtualenv虚拟环境(.venv),先激活.venv虚拟环境 ,然后再激活conda虚拟环境(不事先激活)。

复制代码
#激活virtualenv虚拟环境(.venv)
.venv\Scripts\activate

#激活conda虚拟环境
conda activate 环境名

用powershell(预览版)激活本地virtualenv虚拟环境(.venv)后,再激活相关conda虚拟环境就能实现。

四、使用案例:

在GitHub上,有些开源项目指定要求使用conda虚拟环境 或者 指定virtualenv虚拟环境,有些时候出于种种原因,我们会不想按项目网页指导的流程进行部署,而少数开源项目在不修改代码的情况下,无法实现非官方指定的虚拟环境进行部署,像这种情况下就需要了解嵌套虚拟环境。

拿一个开源项目举例:

facefusion

一个道德合规的换脸开源项目,这个例子比较经典,可以用来说明virtualenv嵌套conda的实践

https://github.com/facefusion/facefusion.git

该项目在官方的安装指导文档中,建议使用conda虚拟环境,python==3.12

但我只想用本地 .venv虚拟环境部署,可是部署时总是失败,提示conda环境未激活。如果我们不想修改代码就实现.venv虚拟环境部署,就需要用到virtualenv嵌套conda虚拟环境来绕过安装检测。

因此就有了使用嵌套虚拟环境部署的方法:

**思路:**我要实现.venv虚拟环境的部署,并且软件包全部安装到.venv虚拟环境,但又要绕过项目代码的conda安装环境检测。

1、用PyCharm在项目本地创建一个.venv虚拟环境:

关于.venv虚拟环境的创建,请参考:

Windows11系统下python虚拟环境管理独家心得-CSDN博客

2、然后进入终端先激活该环境,

3、然后再激活一个相同python版本的conda虚拟环境

上图可以看到已经进入virtualenv嵌套conda的虚拟环境

这里我新建了一个名为"facefusion"的同名conda虚拟环境,同样使用的python3.12版本。这里是为了演示用.venv绕过conda环境检测从而部署facefusion的方法,并不是为了多此一举而多此一举!

(本来是不同python版本的conda环境也行,只要是conda环境就行,但为了避免出现莫名错误,建议先在anaconda创建一个纯净的、与.venv虚拟环境中python版本相同的虚拟环境,部署完成后再删除该conda虚拟环境)

4、然后运行facefusion项目的安装脚本:

复制代码
python install.py --onnxruntime cuda

可以看到安装脚本已经在正确运行了,没有了之前.venv环境运行脚本时的错误提示。

可以看到安装脚本已经成功完成安装。

然后我们可以按提示升级一下venv环境中的pip(一般建议创建完环境后就先升级一下):

复制代码
python.exe -m pip install --upgrade pip

5、然后就可以用命令启动 facefusion了

复制代码
python facefusion.py run --open-browser

因为首次启动需要下载一些模型文件,而这些文件的下载要看网络状况而定,这里就不做等待了.

6、删除Anaconda中用于配合部署测试的conda虚拟环境

后续可以删除Anaconda中用于配合部署测试的facefusion虚拟环境了,只保留项目本地的.venv环境供项目使用就可以了。

小结

至此,用virtualenv嵌套conda虚拟环境部署facefusion项目就算完成了。

写在最后

conda嵌套virtualenv和virtualenv嵌套conda需要灵活使用,一般conda嵌套virtualenv不常用,而virtualenv嵌套conda则可以在特殊场景下发挥作用。

相关推荐
蹦蹦跳跳真可爱5894 分钟前
Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示,)
开发语言·人工智能·python·opencv·计算机视觉
帮帮志1 小时前
Python代码list列表的使用和常用方法及增删改查
开发语言·python
小洛~·~2 小时前
《深度学习入门:基于Python的理论与实现》第三章神经网络
python·深度学习·神经网络
Jackilina_Stone5 小时前
【模型量化】GPTQ 与 AutoGPTQ
人工智能·python·gptq
橙色小博6 小时前
PyTorch中的各种损失函数的详细解析与通俗理解!
人工智能·pytorch·python·深度学习·神经网络·机器学习
小森77677 小时前
(三)机器学习---线性回归及其Python实现
人工智能·python·算法·机器学习·回归·线性回归
-XWB-7 小时前
【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库
人工智能·python·自然语言处理
PacosonSWJTU8 小时前
python基础-13-处理excel电子表格
开发语言·python·excel
小军要奋进8 小时前
httpx模块的使用
笔记·爬虫·python·学习·httpx
Johnny_Cheung9 小时前
字符串、列表、元组、字典
开发语言·python