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

相关推荐
databook32 分钟前
Manim实现闪电特效
后端·python·动效
Blossom.11840 分钟前
AI“点亮”萤火虫:边缘机器学习让微光成像走进4K时代
人工智能·pytorch·python·深度学习·数码相机·opencv·机器学习
Eiceblue2 小时前
Python 将 HTML 转换为纯文本 TXT (HTML 文本提取)
开发语言·vscode·python·html
跟橙姐学代码2 小时前
给Python项目加个“隔离间”,从此告别依赖纠缠!
前端·python·ipython
扑克中的黑桃A2 小时前
Python快速入门专业版(五):从 print 到交互:Python 解释器与 IDLE 的基础使用
python
weixin_457126052 小时前
分享几个免费下载抖音、小红书、快手高清图片和视频的在线网站
javascript·python·html
爱学习的徐徐3 小时前
Python 爬虫(豆瓣top250)-享受爬取信息的快乐
爬虫·python
Dxy12393102163 小时前
Python对图片进行加密,js前端进行解密
前端·javascript·python
jie*4 小时前
小杰深度学习(two)——全连接与链式求导
图像处理·人工智能·pytorch·python·深度学习·分类·回归