离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
背景:
在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到离线 Windows 服务器。
其中一运行labelimg就报错:
Fatal error in launcher: Unable to create process using"D:\miniconda3\envs\labelimg\python.exe"
1. 为什么直接复制 envs\xxx
会出错?
-
启动器硬编码:pip/conda 安装 CLI 时,会在
Scripts\
下生成小型 .exe 启动器,并把「解释器绝对路径」写进可执行文件头。每个Scripts\*.exe
和.py
都写死了原机绝对路径,比如D:\miniconda3\envs\xxx\python.exe
-
路径一旦换盘 / 换目录,启动器仍指向旧地址,导致找不到 python.exe。
2. 核心思路
用 conda-pack
先把环境打成压缩包;在目标机 conda-unpack
批量重写所有路径。全过程无需联网。
3. 解决步骤
源机器(有网)操作
# ① 激活待迁移环境
conda activate myenv# ② 安装一次 conda-pack(任意方式)
pip install conda-pack # ③ 打包为单文件压缩包
conda pack -n myenv -o myenv.tar.gz # 可加 --compress-level 0 提速
会在当前命令行所在目录下生成 myenv.tar.gz,将其
拷到服务器,解压到服务器上的env中。
目标 Windows 服务器(离线)操作
运行 conda-unpack
修复硬编码路径
# 进入环境的 Scripts 目录
cd D:\ai_software\envs\labelimg\Scripts# 执行 conda-unpack
conda-unpack.exe
执行过程会:
-
扫描整个环境,找到旧机器路径前缀;
-
把它们替换为 当前目录的绝对路径;
运行完没有报错即表示修补完成。