簡體   English   中英

如何重命名 conda 環境?

[英]How can I rename a conda environment?

我有一個名為old_name的 conda 環境,如何在不破壞引用的情況下將其名稱更改為new_name

你不能。

一種解決方法是創建克隆一個新環境,然后刪除原始環境。

首先,請記住停用您當前的環境。 您可以使用以下命令執行此操作:

  • 在 Windows 上deactivate
  • 在 macOS/Linux 上source deactivate

然后:

conda create --name new_name --clone old_name
conda remove --name old_name --all # or its alias: `conda env remove --name old_name`

請注意,這種方法有幾個缺點:

  1. 它重新下載包(你可以使用--offline標志來禁用它)
  2. 復制環境文件所消耗的時間
  3. 臨時雙盤使用

有一個請求此功能的未解決問題

conda create --name new_name --copy --clone old_name更好

我使用conda create --name new_name --clone old_name沒有--copy但遇到點中斷...

以下 url 可能有助於在克隆的 conda 環境中安裝 tensorflow 會破壞從中克隆的 conda 環境

根據dwanderson的有用評論,我能夠在 Bash 單行中做到這一點:

conda create --name envpython2 --file <(conda list -n env1 -e )

我命名錯誤的環境是“env1”,而我希望從中克隆的新環境是“envpython2”。

conda 應該給我們一個簡單的工具,比如cond env rename <old> <new>但它沒有。 簡單地重命名目錄,就像在前面的答案中一樣,當然會破壞硬編碼的 hashbangs(#!)。 因此,我們需要更深入地實現我們想要的。

conda env list
# conda environments:
#
base                  *  /home/tgowda/miniconda3
junkdetect               /home/tgowda/miniconda3/envs/junkdetect
rtg                      /home/tgowda/miniconda3/envs/rtg

在這里我試圖重命名rtg --> unsup (請忍受這些名字,這是我真正的用例)

$ cd /home/tgowda/miniconda3/envs 
$ OLD=rtg
$ NEW=unsup
$ mv $OLD $NEW   # rename dir

$ conda env list
# conda environments:
#
base                  *  /home/tgowda/miniconda3
junkdetect               /home/tgowda/miniconda3/envs/junkdetect
unsup                    /home/tgowda/miniconda3/envs/unsup


$ conda activate $NEW
$ which python
  /home/tgowda/miniconda3/envs/unsup/bin/python

上一個答案報告了這一點,但是等等,我們還沒有完成! 待處理的任務是, $NEW/bin目錄有一堆可執行腳本,其中包含指向 $OLD env 路徑的 hashbangs ( #! )。

參見jupyter ,例如:

$ which jupyter
/home/tgowda/miniconda3/envs/unsup/bin/jupyter

$ head -1 $(which jupyter) # its hashbang is still looking at old
#!/home/tgowda/miniconda3/envs/rtg/bin/python

因此,我們可以使用 sed 輕松修復它

$ sed  -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" $NEW/bin/*  
# `-i.bak` created backups, to be safe

$ head -1 $(which jupyter) # check if updated
#!/home/tgowda/miniconda3/envs/unsup/bin/python
$ jupyter --version # check if it works
jupyter core     : 4.6.3
jupyter-notebook : 6.0.3

$ rm $NEW/bin/*.bak  # remove backups

現在我們完成了💯

我認為編寫一個可移植的腳本來完成所有這些並將其綁定到conda env rename old new應該是微不足道的。


我在ubuntu上測試了這個。 無論出於何種不可預見的原因,如果出現問題並且您希望恢復上述更改:

$ mv $NEW  $OLD
$ sed  -i.bak "s:envs/$NEW/bin:envs/$OLD/bin:" $OLD/bin/*

正如@pkowalczyk的回答提到了一些缺點:在我看來,無痛且無風險(解決方法)的方法是遵循以下步驟:

  1. 激活並導出您當前的環境conda env export > environment.yml
  2. 停用當前的 conda 環境。 修改environment.yml文件並根據需要更改環境名稱(通常在yaml文件的第一行)
  3. 通過執行這個conda env create -f environment.yml創建一個新的 conda 環境

此過程需要幾分鍾,現在您可以安全地刪除舊環境。

PS 將近 5 年了,conda 仍然沒有它的“重命名”功能。

我在 Windows 上使用 Conda,這個答案對我不起作用。 但我可以建議另一種解決方案:

  • 重命名環境文件夾( old_namenew_name

  • 打開 shell 並使用自定義文件夾激活 env:

    conda.bat activate "C:\Users\USER_NAME\Miniconda3\envs\new_name"

  • 現在您可以使用此環境,但它不在環境列表中。 更新\安裝\刪除任何包來修復它。 例如,更新 numpy:

    conda update numpy

  • 對包應用任何操作后,環境將顯示在 env 列表中。 要檢查這一點,請鍵入:

    conda env list

為此,可以訪問基本/根環境並使用conda rename

假設一個人的環境是stack並且想要名稱lab ,可以執行以下操作

conda rename -n stack lab

其他選擇包括

conda rename --name stack lab

conda rename -p path/to/stack lab

conda rename --prefix path/to/stack lab

注意事項

  • 不能重命名基礎環境。

  • 不能重命名活動環境。 如果在環境stack的提示中,將無法執行上述操作,並且會CondaEnvException

CondaEnvException:無法重命名活動環境

  • 如果嘗試使用現有環境名稱重命名,則會收到CondaEnvException 使用上面的例子,你會得到

CondaEnvException:環境“實驗室”已經存在。 用 --force 覆蓋。

根據 Thamme Gowda 的回答,以下步驟適用於我的 MacBook Pro:

  1. 將舊環境名稱的文件夾名稱更改為新環境名稱。
  2. 替換新 env 文件夾中 bin 文件夾下所有常規文件的 shebang 行中的所有舊 env 名稱。

命令是:

$ conda deactivate
$ OLD=old_name
$ NEW=new_name
$ cd /Users/my_username/anaconda3/envs/
$ mv $OLD $NEW
$ find $NEW/bin/* -maxdepth 1 -type f -exec sed  -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" {} \;
$ conda activate new_name

檢查shebang線是否正確更換:

$ head -1 $(which jupyter) #!/Users/my_username/anaconda3/envs/new_name/bin/python

在anaconda3 / envs中找到您的環境文件夾。 將環境文件夾重命名為所需的名稱。

您只需重命名 env 文件夾即可重命名您的 Conda env。 這是證明:

Conda 環境重命名

您可以在C:\ProgramData\Anaconda3\envs中找到您的 Conda env 文件夾,或者您可以輸入conda env list以查看 conda envs 列表及其位置。

只需打開文件夾“ \\ Anaconda \\ envs”並重命名即可。

重命名之前 重命名之前

重命名后 重命名后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM