old_name
的conda环境,如何在不破坏引用的情况下将其更改为new_name
?#1 楼
您不能。一种解决方法是创建克隆环境,然后删除原始环境:
(请记住有关在Windows上使用
deactivate
并在macOS /上使用source deactivate
停用当前环境的信息。 Linux)conda create --name new_name --clone old_name
conda remove --name old_name --all # or its alias: `conda env remove --name old_name`
此方法有几个缺点:
它会重新下载软件包-可以使用
--offline
标志禁用它,在复制环境文件上所花费的时间,
临时使用双磁盘。
有一个未解决的问题,要求此功能。
评论
booooo为什么一个人不能重命名conda env?
–查理·帕克(Charlie Parker)
17年6月15日在18:10
以便为那些使用conda的人留下一些工作,从而使他们在途中更加了解:P:D
– Saravanabalagi Ramachandran
17年7月3日在6:40
另一种方法是克隆环境conda create --name new_name --clone old_name,然后可以删除旧的环境。
–Y0da
17年11月22日在14:01
警告词-我尝试执行此操作,并遇到了奇怪的错误-我的.bashrc不再起作用,尝试运行pytest会失败,尝试引用现在已删除的环境。我尝试了新的外壳,没有运气就重新启动。最终不得不删除新环境,然后从全新安装开始。速度较慢,但现在似乎可以正常工作。
–dwanderson
18年2月27日在18:09
@dwanderson +5000,因为我要尝试使用此答案,但我只是要立即取消创可贴并从头开始重新创建我的名字不好的env。
–更好
19年2月2日在20:44
#2 楼
根据dwanderson的有用评论,我能够以Bash的单行代码进行此操作:conda create --name envpython2 --file <(conda list -n env1 -e )
我名字不好的env是“ env1”,我希望新的一个要从中克隆的是“ envpython2”。
评论
遇到错误,显示PackagesNotFoundError:当前脚本无法从当前通道使用以下软件包。仅当您没有随pip一起安装且现有环境中conda中不可用的软件包时,此脚本才可能起作用。
–陈宇轩
20-4-2在16:42
#3 楼
conda create --name new_name --copy --clone old_name
更好我使用没有
conda create --name new_name --clone old_name
的--copy
以下URL可能会帮助
在克隆的中安装tensorflow conda环境破坏了从其克隆的conda环境
评论
mvenv(){conda create --name $ 2 --copy --clone $ 1; conda remove --name $ 1 --all;}
–user3673
20-09-20在4:32
(将其放置在〜/ .bashrc的末尾,您显然具有所请求的功能。可以随意将其合并到您的答案中,因为我无法构思出涉及--clone和--copy的解决方案。)
–user3673
20 Sep 20'4:34
#4 楼
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
dir有很多具有hashbangs(#!
)指向$ OLD env路径的可执行脚本。请参阅
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/*
评论
如果琐碎,那么为您贡献代码基础将是一件很棒的事情!许多人会感激(包括我自己)
–肖恩
20年8月29日在21:44
#5 楼
您可以通过重命名env文件夹来重命名Conda env。这是证明:
您可以在
C:\ProgramData\Anaconda3\envs
内找到您的Conda env文件夹,也可以输入conda env list
来查看列表conda envs的名称及其位置。评论
对于Linux并非如此
– ottovon
20-09-15在11:28
坏主意:stackoverflow.com/a/52717925/1506477解释了为什么
–奇妙
20 Dec 4'在5:34
#6 楼
我在Windows上使用Conda,但此答案对我不起作用。但我可以建议另一个解决方案:重命名环境文件夹(
old_name
至new_name
)打开外壳并使用自定义文件夹激活env:
conda.bat activate "C:\Users\USER_NAME\Miniconda3\envs\new_name"
现在您可以使用此环境了,但是它不在环境列表中。更新\安装\删除任何软件包以对其进行修复。例如,对包应用任何操作后,更新numpy:
conda update numpy
,环境将显示在env列表中。要对此进行检查,请键入:
conda env list
评论
另请参阅有关如何克隆conda环境的帖子您不能重命名(令人沮丧!),但是您可以使用新名称克隆旧环境并删除旧环境:conda create --name new_name --clone old_name然后删除旧环境:conda remove --name old_name --all