Conda环境迁移两台电脑两种方案
Conda环境迁移两台电脑两种方案若仅迁移纯pip包可额外导出requirements.txt备用即可pip freezerequirements.txt方案1yml配置文件迁移推荐跨系统、在线可用体积小适用Windows ↔ Linux/macOS、网速好、不需要完全一模一样二进制包只复刻依赖版本源电脑操作打开Anaconda Prompt / 终端激活要迁移的环境conda activate 你的环境名导出环境配置–no-builds去掉平台特有构建标识跨系统不报错condaenvexport--no-buildsenv.yml补充如果只想导出你手动安装的包不包含自动依赖用这个更干净condaenvexport--from-historyenv.yml把env.yml文件拷贝到另一台电脑目标电脑操作安装好Anaconda/Miniconda打开终端进入yml所在文件夹重建环境condaenvcreate-fenv.yml验证并激活condaenvlist conda activate 你的环境名跨系统踩坑处理Windows导出的yml会带pywin32、win-xxx专属包Linux/macOS装会失败打开env.yml删除带pywin32、vc、win的行再执行创建命令。方案2conda-pack 完整打包离线迁移同系统完美复刻断网专用适用两台系统完全一样都是Windows 64位 / 都是Ubuntu 64、离线无网、需要包二进制完全一致、CUDA/GPU环境迁移首选conda-pack工具本体打包虚拟环境的程序作用把一整个 Conda 虚拟环境比如你那个 cv 环境打包成一个压缩包能拷贝到另一台 Windows/Linux 机器直接解压使用不用重新 pip/conda 装依赖。功能完整打包 Python、CUDA、所有 pip/conda 安装的包、环境配置适用场景离线部署、换电脑迁移深度学习环境正好适配你 torch、torchvision 离线需求为什么要在 base 装打包程序不能装在被打包的环境cv 里否则打包自身时会文件占用、目录冲突就是你之前报错 conda-bld/work 的根源官方规范必须在 base 主环境执行打包。-c conda-forge指定软件源渠道-c 参数全称 --channel含义从哪个软件仓库下载包conda-forge 是什么是全球最大、最主流的第三方 Conda 开源软件仓库Anaconda 官方自带源包少很多工具conda-pack、ffmpeg、opencv、各类编译库官方渠道没有conda-forge 维护了几十万开源工具更新更快、版本更全不加 -c conda-forge 的话conda 会去默认官方源搜大概率找不到 conda-pack安装失败。源电脑先在base环境安装打包工具不要在待打包环境内执行打包conda activate base condainstall-cconda-forge conda-pack打包指定环境生成压缩包包含所有库文件# -n 指定环境名-o 输出文件名conda pack-n你的环境名-oenv.tar.gz有pip可编辑安装包报错加参数--ignore-editable-packagesconda pack-n你的环境名 --ignore-editable-packages-oenv.tar.gz将env.tar.gz传到新电脑目标电脑把压缩包解压到conda的envs目录Windows路径示例C:\Users\用户名\miniconda3\envs\Linux/macOS~/miniconda3/envs/# Linux/macOS解压mkdir~/miniconda3/envs/myenvtar-xzfenv.tar.gz-C~/miniconda3/envs/myenvWindows直接解压到envs下新建文件夹修复环境内路径必执行否则激活报错conda-unpack 是干嘛的核心原理Conda 环境里所有 exe、dll、python 脚本、编译库内部都硬编码写死了原始机器的绝对路径比如你打包前路径C:\Users\Administrator\miniconda3\envs\cv。把压缩包拷到另一台电脑、或者换个文件夹解压后原始路径不存在会出现激活环境报错import torch/OpenCV 找不到库脚本运行提示文件不存在conda-pack 在打包时会自动把修复脚本 conda-unpack.exe 塞进压缩包里conda-unpack 的唯一作用批量改写环境内所有文件里写死的旧路径替换成当前新解压的真实路径让环境能正常使用。不执行这一步解压完的环境基本无法正常激活、运行代码。打开 CMD/PowerShell进入解压后的环境根目录先临时激活这个刚解压好的环境.\Scripts\activate.bat执行修复命令两种写法都可以# 写法1直接运行目录里的exe最稳妥 .\Scripts\conda-unpack.exe # 写法2激活环境后直接简写 conda-unpack conda-unpack激活使用conda activate myenv两种方案对比方式优点缺点使用场景yml导出文件很小、跨系统兼容、传输快需要联网下载包同系统无法锁定底层库不同操作系统、在线环境、代码复现conda-pack离线可用包完全一模一样GPU/CUDA完整迁移压缩包几十GB只能同系统迁移同系统离线服务器、本地GPU环境拷贝补充小技巧环境内pip安装的包yml也会记录重建时自动pip安装打包前清理缓存缩小体积conda clean -a