繁体   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