Conda 環境移植 (兩種方式)

  • 2022 年 11 月 17 日
  • 筆記

————————方法一————————

優點: 在原機器上需要進行的操作較少,且除了conda不需要其餘的庫來支撐;需要傳輸的文件小,操作較為簡單。

缺點:在新的機器上復現原環境時,需要重新下載對應的依賴包,且可能會安裝不上有些依賴包。耗費時間長,且完整重現環境的概率小。

具有待移植的環境的服務器

1 進入你要移植的環境

conda activate your_env

2 導出當前conda環境到某個文件(文件名字可以自定義)

conda env export > env_filename.yaml

在執行這條語句時可能會報權限不足:zsh: permission denied: env_filename.yaml

以下是解決辦法

(1)首先進入到服務器的anaconda的conda目錄下(或者bin目錄下) ../anaconda/bin/conda

(2)執行 chmod -R +x …/anaconda/bin

(3)再執行 conda init zsh

即可;再重新執行conda env export > env_filename.yaml 就不會報錯了;注意生成的.yaml文件在你當前所在的文件夾下。

3 導出當前conda環境通過pip安裝的包:

pip freeze > requirements.txt

注意生成的.txt文件在你當前所在的文件夾下。

需要安裝移植環境的服務器

1 復現conda環境

conda env create -f env_filename.yaml

此時建立了一個名字叫為env_filename的環境

2 復現conda環境中pip安裝的包

進入新建立的env_filename環境,執行以下命令

pip install -r requirements.txt

到此結束,大功告成

————————方法二————————

優點:不需要在新的機器上二次下載,直接在對應位置解壓打包好的環境包就可以直接使用;成功率高,推薦;

缺點: 如之前未安裝過conda-pack,則需要先安裝此包,需要額外操作;一般環境包較大,約幾個G大小,傳輸到新機器上耗費的時間和網絡資源大。

具有待移植的環境的服務器

1 安裝 conda-pack 包(若之前未安裝過)

pip install conda-pack

tips: 如何報以下錯誤,

ERROR: Could not find a version that satisfies the requirement conda-pack (from versions: none)
ERROR: No matching distribution found for conda-pack

多半是網絡問題,換個鏡像源就ok

pip install conda-pack -i //mirrors.aliyun.com/pypi/simple –trusted-host mirrors.aliyun.com

2 打包原環境 (無論你當前位於哪個虛擬環境中)

conda pack -n env_name

env_name 是 你需要移植的環境名

該命令會在你當前所在的目錄產生一個環境包的壓縮文件 env_name.tar.gz

3 傳輸 env_name.tar.gz

使用SCP或者其他的命令或方式將 env_name.tar.gz 傳輸到 你需要移植到的新機器的 anaconda 的 envs 目錄下: e.g. /home/pc/anaconda3/envs/

需要安裝移植環境的服務器

1 解壓 env_name.tar.gz

首先在 /home/pc/anaconda3/envs/ 下新建mkdir一個文件夾 ,文件夾的名字就是壓縮包的名稱即可(當然也可以自定義一個新的名稱)

然後使用以下命令解壓環境壓縮包到新建的文件夾中:

tar -xzf env_name.tar.gz -C ~/anaconda3/envs/env_name/

2 測試環境

直接 conda activate env_name 測試是否能夠激活環境,如果可以則說明移植成功!

到此結束,大功告成