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 測試是否能夠激活環境,如果可以則說明移植成功!