怎么使用嵌套虚拟环境实现项目部署之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则可以在特殊场景下发挥作用。

相关推荐
Humbunklung23 分钟前
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRectF)
笔记·python·学习·pyqt
蹦蹦跳跳真可爱58935 分钟前
Python----深度学习(基于DNN的吃鸡预测)
python·深度学习·dnn
JJ1M81 小时前
Git技巧:Git Hook,自动触发,含实战分享
git·python·自动化
拓端研究室TRL2 小时前
PyMC+AI提示词贝叶斯项目反应IRT理论Rasch分析篮球比赛官方数据:球员能力与位置层级结构研究
大数据·人工智能·python·算法·机器学习
小白用python2 小时前
pycharm无法创建venv虚拟环境
ide·python·pycharm
ImAlex2 小时前
开开心心放假回家,结果忘记老家wifi密码新买的手机连不上WiFi?不用慌,pywifi来拯救你。
python
fantasy_43 小时前
LeetCode238☞除自身以外数组的乘积
java·数据结构·python·算法·leetcode
Tech Synapse3 小时前
零基础搭建AI作曲工具:基于Magenta/TensorFlow的交互式音乐生成系统
人工智能·python·tensorflow
纪元A梦3 小时前
华为OD机试真题——阿里巴巴找黄金宝箱Ⅰ(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od·go
AI_RSER4 小时前
Python 数据可视化全场景实现(一)
开发语言·人工智能·python·信息可视化·遥感