背景:
在進行深度學習算法的環境部署時,由于生產服務器被徹底隔離外網,只能把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
執行過程會:
-
掃描整個環境,找到舊機器路徑前綴;
-
把它們替換為 當前目錄的絕對路徑;
運行完沒有報錯即表示修補完成。