Conda 环境激活:奇怪的 "must be sourced" 错误

Conda env activation: Weird "must be sourced" error

我正在尝试 运行 以下内容:

source activate env-name

但是我收到一条错误消息,告诉我必须对 activate 进行调用。在 Conda activate 脚本中,开头附近有一个 if 块测试 "$(basename "[=14=]")",特别是它是否等于 activate,在这种情况下它会引发我所指的异常。稍微修改一下脚本(即 echo [=16=]; return 1),我发现它确实认为我传入的第 0 个参数是 activate 而不是 source。这很令人费解,因为我知道我的命令中包含 source 并且那应该是第 0 个参数。我不确定还有什么可做的。有人有线索吗?

万一它很重要,我使用 zsh 作为我的默认 shell 并且 activate 脚本似乎是 bash 脚本,但我认为不应该重要(对我来说在其他地方没有,只在我工作笔记本电脑上的这个特定环境中)。我可以通过注释整个检查(以及其他一些小的更改)来解决整个问题,但在这种特殊情况下我宁愿不必这样做。

我一直遇到同样的问题,我找到的唯一解决方法是:

source <PATH TO ANACONDA>/anaconda3/bin/activate <ENV NAME>

编辑:添加行:

export PATH=$PATH:<PATH TO ANACONDA>/anaconda3/bin:$PATH

到您的 bashrc(或 zsh 等)会将源添加到您的路径,您将能够正常使用 source

** 我没有足够的声誉,所以我回复这个。 (我只想发表评论,但我不能)

知道这个就可以解决
"Run 'Source activate envname'" 表示您必须 运行 在正确的路径或目录上执行此命令。

如果你在 /home/user/anaconda3/ 上安装 anaconda3 您正确的源路径是 /home/user/anaconda3/bin/

/home/user/anaconda3/bin/ activate tensorflow

cd /home/user/anaconda3/bin
. activate tensorflow

所以,我已经通过添加路径(或移动正确的路径)解决了这个问题

我得到了类似的错误,因为我正在使用 asdf-vm which masks actual binaries with shims. As documented here,需要获取源的脚本必须直接访问,因为 asdf 使用 exec 系统调用。因此,就我而言,以下命令有效:

source $(asdf which activate) <ENV NAME>

虽然此答案特定于 asdf,但您收到的错误表明您处于类似情况,即对 activate 的调用被其他人拦截可执行文件。