Conda env激活:奇怪的“必须来源”错误

时间:2016-02-08 05:35:00

标签: bash zsh conda

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

source activate env-name

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

如果它很重要,我使用zsh作为我的默认shell,似乎activate脚本是一个bash脚本,但我认为这不重要(它不适合我,只在我的工作笔记本电脑上的这个特定环境)。我能够通过评论整个检查(以及其他一些小的改动)来解决这个问题,但在这种特殊情况下我宁愿不必这样做。

3 个答案:

答案 0 :(得分:4)

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

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

编辑:添加以下行:

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

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

答案 1 :(得分:0)

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

你可以解决这个问题 “运行'源激活envname'”表示必须在正确的路径或目录上运行此命令。

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

/home/user/anaconda3/bin/ activate tensorflow

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

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

答案 2 :(得分:0)

我遇到了类似的错误,因为我使用的是asdf-vm,它用垫片掩盖了实际的二进制文件。如here所述,必须直接访问需要来源的脚本,因为 asdf 使用AutoCompleteTextView系统调用。因此,就我而言,以下命令有效:

exec

虽然此答案特定于 asdf ,但您收到的错误表明您处于类似的情况,其中对source $(asdf which activate) <ENV NAME> 的调用被其他可执行文件拦截。