ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Conda环境迁移两台电脑两种方案

Conda环境迁移两台电脑两种方案

Conda环境迁移两台电脑两种方案

若仅迁移纯pip包,可额外导出requirements.txt备用即可:

pip freeze>requirements.txt

方案1:yml配置文件迁移(推荐跨系统、在线可用,体积小)

适用:Windows ↔ Linux/macOS、网速好、不需要完全一模一样二进制包,只复刻依赖版本

源电脑操作

  1. 打开Anaconda Prompt / 终端,激活要迁移的环境
conda activate 你的环境名
  1. 导出环境配置(–no-builds去掉平台特有构建标识,跨系统不报错)
condaenvexport--no-builds>env.yml

补充:如果只想导出你手动安装的包(不包含自动依赖),用这个更干净

condaenvexport--from-history>env.yml
  1. env.yml文件拷贝到另一台电脑

目标电脑操作

  1. 安装好Anaconda/Miniconda,打开终端
  2. 进入yml所在文件夹,重建环境
condaenvcreate-fenv.yml
  1. 验证并激活
condaenvlist conda activate 你的环境名

跨系统踩坑处理

Windows导出的yml会带pywin32win-xxx专属包,Linux/macOS装会失败:
打开env.yml,删除带pywin32vcwin的行再执行创建命令。

方案2:conda-pack 完整打包离线迁移(同系统完美复刻,断网专用)

适用:两台系统完全一样(都是Windows 64位 / 都是Ubuntu 64)、离线无网、需要包二进制完全一致、CUDA/GPU环境迁移首选

  1. conda-pack:工具本体,打包虚拟环境的程序
    作用:把一整个 Conda 虚拟环境(比如你那个 cv 环境)打包成一个压缩包,能拷贝到另一台 Windows/Linux 机器直接解压使用,不用重新 pip/conda 装依赖。
    功能:完整打包 Python、CUDA、所有 pip/conda 安装的包、环境配置;
    适用场景:离线部署、换电脑迁移深度学习环境(正好适配你 torch、torchvision 离线需求);
    为什么要在 base 装:打包程序不能装在被打包的环境(cv) 里,否则打包自身时会文件占用、目录冲突(就是你之前报错 conda-bld/work 的根源),官方规范必须在 base 主环境执行打包。
  2. -c conda-forge:指定软件源渠道
    -c 参数全称 --channel,含义:从哪个软件仓库下载包
    conda-forge 是什么?
    是全球最大、最主流的第三方 Conda 开源软件仓库:
    Anaconda 官方自带源包少,很多工具(conda-pack、ffmpeg、opencv、各类编译库)官方渠道没有;
    conda-forge 维护了几十万开源工具,更新更快、版本更全;
    不加 -c conda-forge 的话,conda 会去默认官方源搜,大概率找不到 conda-pack,安装失败。

源电脑

  1. 先在base环境安装打包工具(不要在待打包环境内执行打包)
conda activate base condainstall-cconda-forge conda-pack

  1. 打包指定环境(生成压缩包,包含所有库文件)
# -n 指定环境名,-o 输出文件名conda pack-n你的环境名-oenv.tar.gz

  • 有pip可编辑安装包报错加参数:--ignore-editable-packages
conda pack-n你的环境名 --ignore-editable-packages-oenv.tar.gz
  1. env.tar.gz传到新电脑

目标电脑

  1. 把压缩包解压到conda的envs目录
    Windows路径示例:C:\Users\用户名\miniconda3\envs\
    Linux/macOS:~/miniconda3/envs/
# Linux/macOS解压mkdir~/miniconda3/envs/myenvtar-xzfenv.tar.gz-C~/miniconda3/envs/myenv

Windows:直接解压到envs下新建文件夹

  1. 修复环境内路径(必执行,否则激活报错)

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. 执行修复命令(两种写法都可以)
# 写法1:直接运行目录里的exe(最稳妥) .\Scripts\conda-unpack.exe # 写法2:激活环境后直接简写 conda-unpack conda-unpack

  1. 激活使用
conda activate myenv

两种方案对比

方式优点缺点使用场景
yml导出文件很小、跨系统兼容、传输快需要联网下载包,同系统无法锁定底层库不同操作系统、在线环境、代码复现
conda-pack离线可用,包完全一模一样,GPU/CUDA完整迁移压缩包几十GB,只能同系统迁移同系统离线服务器、本地GPU环境拷贝

补充小技巧

  1. 环境内pip安装的包yml也会记录,重建时自动pip安装;
  2. 打包前清理缓存缩小体积:conda clean -a
返回列表