问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【Pytorch】Conda环境pack打包迁移报错处理

创作时间:
2025-01-21 18:58:30
作者:
@小白创作中心

【Pytorch】Conda环境pack打包迁移报错处理

在机器学习和深度学习项目中,开发者经常需要在不同设备之间迁移开发环境。使用Anaconda虚拟环境可以很好地解决依赖问题,但如何将一个配置好的环境从一台电脑迁移到另一台电脑呢?本文将详细介绍使用conda-pack工具进行环境打包和迁移的具体步骤,并提供常见问题的解决方案。

Anaconda虚拟环境打包

在本机上验证成功的实验环境需要迁移到更高级的设备上。例如,一个在单张4090显卡上运行128k多模态大模型的环境,推理和评测花费了两个半小时。为了节省时间,需要将环境迁移到配备8个A100显卡的机器上。迁移的基本要求是两台电脑都已安装Anaconda。

一、源电脑的环境打包

使用Anaconda Prompt进行操作:

  1. 安装conda-pack工具

    conda install conda-pack
    
  2. 确定环境

    conda env list
    

    找到需要打包的环境名,例如VLM。

  3. 打包环境

    conda pack -n VLM -o VLM.tar.gz
    
  4. 将打包环境拷贝到U盘

    在Windows环境下,打包文件位于当前目录,例如C:/Users/XX/VLM.tar.gz。Linux环境下同理。

二、环境迁移到目标电脑上

方法一:

  1. 使用Anaconda Prompt创建新环境:

    conda create -n py310 python=3.10
    
  2. 将U盘中的打包环境拷贝到目标电脑的用户名目录:

    C:/Users/XX/Py36.tar.gz

  3. 解压打包环境到新环境路径下:

    tar -zxvf Py36.tar.gz -C E:\anaconda3\envs\py36\
    
  4. 激活新环境:

    conda activate py310
    

    如果此方法失败,可以尝试方法二:

方法二:

  1. 找到目标电脑的环境文件夹,通常位于anaconda的envs目录下,例如E:\anaconda3\envs。

  2. 将U盘中的打包环境拷贝到envs目录内。

  3. 在环境路径下使用cmd命令行新建文件夹:

    mkdir py36
    

    或者手动新建文件夹。

  4. 解压打包环境到新环境中:

    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问题
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号