Python Anaconda:在Linux中,我应该使用`conda activate`还是`source activate`?

65
我习惯在启动Python Anaconda环境时输入source activate <environment>,这个方法很有效。但是,在创建新的conda环境时,Ubuntu 16.04会显示使用conda activate来启动环境。除了关于如何设置我的shell以使用conda activate的错误之外,我仍然不清楚source activate ...conda activate ...之间有何区别。是否有理由进行更改?是否有人知道这两个命令之间的区别?谢谢。
3个回答

86
截至conda 4.4版本,conda activate是最佳的激活环境方式。通常情况下,你不会在使用conda activate和旧版的source activate之间发现太大的区别,除了它被设计为更快,并且在不同的操作系统中工作方式相同(后者的差异在我看来使conda activate有了很大的提升)。
根据文档,关于conda版本4.4.0(2017年12月发布)的发布:

conda activate: 重构了环境激活的逻辑和机制。在conda 4.4中,conda activate和conda deactivate现在是激活和停用环境的首选命令。你会发现它们比前几个conda版本中的source activate和source deactivate命令更加灵敏。conda activate命令还具有以下优点:(1)在所有操作系统、shell和平台上通用,(2)没有与其他包的脚本(如python虚拟环境的激活脚本)发生路径冲突。


1
啊,我明白了。我在文档中没有看到这个部分,所以感谢你指出来。现在我看到区别了。糟糕,现在我必须去更新我的zsh配置和bash配置,等等... :)。 - krishnab
1
是啊...有人应该更新剩下的文档了,因为我找到的唯一信息(如上所述)都藏在发布说明中... - sacuL
哈哈,现在有很多Anaconda文档,我想即使连续公司的人也很难知道在每次更改后更新哪些内容 :). 但我想这是普遍的情况。前几天我正在安装Tensorflow-gpu,那个文档甚至更糟糕——因为软件包的安装与cuda版本等紧密相关。那真是太痛苦了。至少Anaconda的错误消息告诉我该怎么做 :). - krishnab
1
conda activate的问题在于它假设conda已经在您的PATH中;而source activate通常是我首次将conda放入PATH的方式。 - user5359531
1
Conda的发布说明现在可在https://docs.conda.io/projects/conda/en/latest/release-notes.html找到--向下滚动到Conda 4.4.0的发行说明中,了解“conda activatesource activate”的区别。 - Samuel Lelièvre

17

这里是我发现的一个区别。在bash脚本的开头使用source activate可以加载conda环境,而conda activate会给我一个错误:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

对我来说,这很重要,因为我经常将 bash 作业提交到集群上,source activate 是更改 conda 环境的唯一方法。

如果有人能在 bash 脚本中使用 conda activate ,请纠正我。


9
请看这个链接:https://github.com/conda/conda/issues/7980。您的 Bash 脚本开头加入以下两行代码,即可在脚本中使用 conda activateCONDA_BASE=$(conda info --base) source $CONDA_BASE/etc/profile.d/conda.sh - Luigi
4
在Docker文件中怎么处理? - Juan
在Dockerfile中使用,请尝试这个 - Rm4n
谢谢 @Luigi...解决了一个古老的问题 - Priyank Pathak

0

我不确定谁会发现这个有用,但如果

  1. 由于在您的.bashrc中添加了">>> conda initialize"而导致终端滞后,然后您决定将其删除并将anaconda添加到路径中。 如果是这种情况,则"conda activate env_name"将无法工作,但"source activate env_name"将起作用,之后您可以使用source activate或conda activate。 如果您关闭了shell,则要再次激活环境,请使用"source activate env_name"
  2. 顺便说一下,从我的.bashrc文件中删除">>> conda initialize >>>"加速了我的终端,它不再滞后,我默认使用"source activate env_name"
  3. 我使用的是Ubuntu 20.04,conda版本:4.10.3,conda-build版本:3.21.5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接