文章目录
Conda 环境的迁移和复现是日常运维中的高频需求。本文整理三种主流迁移方式及离线部署方案,覆盖同平台、跨平台、断网等场景。
一、conda-pack 打包迁移(同平台)
conda-pack 将整个 Conda 环境(含二进制文件)打包成压缩包,适合相同 OS / 架构的机器间迁移。最大优势:目标机器无需联网。
1.1 安装 conda-pack
conda-pack 需单独安装,二选一即可:
conda install -c conda-forge conda-pack
pip install conda-pack
国内加速:
pip install conda-pack -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
1.2 打包环境
conda pack -n my_env -o my_env.tar.gz
conda pack -n my_env -o my_env.tar.gz-n 指定环境名,-o 指定输出文件名。也可按路径打包:
conda pack -p /path/to/my_env -o my_env.tar.gz
1.3 迁移到目标机器
# 1. 将 tar.gz 拷贝到目标机器(U盘 / scp / rsync 均可)
scp my_env.tar.gz user@target:/tmp/
# 2. 在目标机器解压到 conda envs 目录
mkdir -p ~/miniconda3/envs/my_env
tar -xzvf /tmp/my_env.tar.gz -C ~/miniconda3/envs/my_env
# 3. 激活验证
conda env list
conda activate my_env
# 1. 将 tar.gz 拷贝到目标机器(U盘 / scp / rsync 均可)
scp my_env.tar.gz user@target:/tmp/
# 2. 在目标机器解压到 conda envs 目录
mkdir -p ~/miniconda3/envs/my_env
tar -xzvf /tmp/my_env.tar.gz -C ~/miniconda3/envs/my_env
# 3. 激活验证
conda env list
conda activate my_env解压后环境即开即用,无需再次 conda install。
二、spec-list 文件迁移(同平台)
适用于仅需复现包列表、不需要完整二进制的场景。本质是导出精确版本号再批量安装。
# 源机器导出
conda list --explicit > spec-list.txt
# 目标机器导入
conda create -n my_env --file spec-list.txt
这种方式依赖网络(目标机器需联网下载包),但生成的文件体积极小,适合版本管控。
三、environment.yml 跨平台迁移
当源和目标 OS / 架构不同时,使用 YAML 描述文件重新安装是最可靠的方式。
# 源机器导出(会包含 pip 依赖)
conda env export > environment.yml
# 目标机器重建
conda env create -f environment.yml
注:environment.yml 导出的是完整依赖树,可能包含平台特定包。跨平台时建议手动精简关键依赖,或使用 --from-history 仅导出显式安装的包:
conda env export --from-history > environment.yml
四、离线安装方案
断网机器上安装 Conda 和创建环境,核心思路是"有网预下载,离线用缓存"。
4.1 安装 Miniconda(离线)
先在有网机器下载安装脚本,再传到目标机器:
# 下载对应架构的安装包
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 离线安装(-b 静默,-p 指定路径)
bash Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3
source ~/miniconda3/bin/activate
4.2 预下载依赖包
在有网机器上下载所需 Python 版本的所有依赖:
# 方式一:基于 environment.yml
conda env create -f environment.yml --download-only
# 方式二:创建临时环境仅下载
conda create -n temp_env python=3.10 --download-only -d ~/conda_offline_pkgs
# 打包
tar -zcvf conda_offline_pkgs.tar.gz ~/conda_offline_pkgs
4.3 离线创建环境
把 conda_offline_pkgs.tar.gz 和 environment.yml 传到目标机器:
tar -zxvf conda_offline_pkgs.tar.gz -C ~/
conda config --add pkgs_dirs ~/conda_offline_pkgs
conda env create -f environment.yml --offline
五、三种方式对比
| 方式 | 适用场景 | 核心特点 | 依赖网络 |
|---|---|---|---|
| conda-pack | 同平台迁移首选 | 打包二进制,一步解压即用 | ❌ 不需要 |
| spec-list | 同平台轻量分发 | 导出版本号列表,体积小 | ✅ 需要 |
| environment.yml | 跨平台唯一可靠方案 | 导出 YAML 重建,兼容性最好 | ✅ 需要 |
六、实操要点
- conda-pack 打包后源环境不变,放心操作。
- 如果解压后
conda activate报错,先在目标机器执行conda init初始化 shell。 - 打包前建议
conda clean -a清理缓存,减小压缩包体积。 - 跨平台迁移时注意 packages 中的平台特定包(如
mkl、cuda-toolkit),必要时手动剔除。 - arm64(M1/M2 Mac)和 x86_64 之间迁移必须使用 environment.yml 方式。
简记。







