【Pytorch】Conda环境pack打包迁移报错处理
【Pytorch】Conda环境pack打包迁移报错处理
在机器学习和深度学习项目中,开发者经常需要在不同设备之间迁移开发环境。使用Anaconda虚拟环境可以很好地解决依赖问题,但如何将一个配置好的环境从一台电脑迁移到另一台电脑呢?本文将详细介绍使用conda-pack工具进行环境打包和迁移的具体步骤,并提供常见问题的解决方案。
Anaconda虚拟环境打包
在本机上验证成功的实验环境需要迁移到更高级的设备上。例如,一个在单张4090显卡上运行128k多模态大模型的环境,推理和评测花费了两个半小时。为了节省时间,需要将环境迁移到配备8个A100显卡的机器上。迁移的基本要求是两台电脑都已安装Anaconda。
一、源电脑的环境打包
使用Anaconda Prompt进行操作:
安装conda-pack工具
conda install conda-pack
确定环境
conda env list
找到需要打包的环境名,例如VLM。
打包环境
conda pack -n VLM -o VLM.tar.gz
将打包环境拷贝到U盘
在Windows环境下,打包文件位于当前目录,例如C:/Users/XX/VLM.tar.gz。Linux环境下同理。
二、环境迁移到目标电脑上
方法一:
使用Anaconda Prompt创建新环境:
conda create -n py310 python=3.10
将U盘中的打包环境拷贝到目标电脑的用户名目录:
C:/Users/XX/Py36.tar.gz
解压打包环境到新环境路径下:
tar -zxvf Py36.tar.gz -C E:\anaconda3\envs\py36\
激活新环境:
conda activate py310
如果此方法失败,可以尝试方法二:
方法二:
找到目标电脑的环境文件夹,通常位于anaconda的envs目录下,例如E:\anaconda3\envs。
将U盘中的打包环境拷贝到envs目录内。
在环境路径下使用cmd命令行新建文件夹:
mkdir py36
或者手动新建文件夹。
解压打包环境到新环境中:
tar -zxvf Py36.tar.gz -C ./py36
三、异常处理
pip install -e. 导致无法pack
如果遇到以下错误:
Collecting packages...
CondaPackError: Cannot pack an environment with editable packages
installed (e.g. from `python setup.py develop` or
`pip install -e`). Editable packages found:
- /home/xxx
可以使用以下命令忽略可编辑包:
conda pack -n VLM -o VLM.tar.gz --ignore-editable-packages
解压缩时使用:
mkdir ~/ananconda/envs/pcdet-tmp
tar -xf pcdet.tar.gz -C ~/ananconda/envs/pcdet-tmp
cd ~/ananconda/envs/pcdet-tmp
source ./bin/activate
管理的文件已被删除或覆盖
如果出现以下错误:
CondaPackError:
Files managed by conda were found to have been deleted/overwritten in the following packages:
- charset-normalizer 2.0.4:
- xxxx
This is usually due to `pip` uninstalling or clobbering conda managed files,
resulting in an inconsistent environment. Please check your environment for
conda/pip conflicts using `conda list`, and fix the environment by ensuring
only one version of each package is installed (conda preferred).
可以尝试在Linux系统下使用tar命令进行压缩:
tar -czvf VLM.tar.gz VLM
注意事项
在Linux系统中,anaconda的完整文件目录可能不会显示env文件夹,但可以直接通过cd命令进入env目录。
如果需要压缩单个文件,例如myfile.txt,可以使用:
tar -czvf myfile.tar.gz myfile.txt
这些命令将在当前目录下创建.tar.gz文件,可以根据需要更改文件路径或指定输出目录。
重新激活环境
对于tar压缩的文件,解压执行:
tar -xzvf VLM.tar.gz
如果是.zip文件,可以使用:
unzip -d /xxxx/anaconda/envs/ pyenv.zip
注意!打包的虚拟环境记录的是源环境的路径,新系统上的anaconda安装路径可能与源环境不同。例如,源环境路径为/xxxx/anaconda2023/,而新系统路径为/xxxx/anaconda/。此时需要在新系统上新建一个与源环境路径相同的空目录:
mkdir /xxxx/anaconda3/envs/
然后创建软链接:
ln -s /xxxx/anaconda/envs/pyenv /xxxx/anaconda3/envs/
将空目录指向实际的anaconda路径,最后激活环境:
source activate /xxxx/anaconda/envs/VLM
希望这些步骤能帮助你顺利完成环境迁移!
参考文献:
- conda-pack迁移虚拟环境
- 离线环境conda虚拟环境备份迁移–conda pack问题