【问题标题】:Conda env activation: Weird "must be sourced" errorConda env 激活:奇怪的“必须来源”错误
【发布时间】:2016-02-08 05:35:00
【问题描述】:

我正在尝试运行以下命令:

source activate env-name

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

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

【问题讨论】:

    标签: bash zsh conda


    【解决方案1】:

    我遇到了同样的问题,我发现的唯一解决方法是:

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

    编辑:添加行:

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

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

    【讨论】:

    • 我认为这是要走的路。我不明白是什么导致了问题,但这似乎很简单。
    【解决方案2】:

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

    知道这一点就可以解决。
    “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
    

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

    【讨论】:

      【解决方案3】:

      我遇到了类似的错误,因为我使用的是asdf-vm,它用垫片掩盖了实际的二进制文件。正如here 所记录的那样,必须直接访问需要获取源的脚本,因为asdf 使用exec 系统调用。所以在我的情况下,以下命令有效:

      source $(asdf which activate) <ENV NAME>
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-25
        • 2021-12-27
        • 2021-10-26
        • 2017-06-14
        • 1970-01-01
        相关资源
        最近更新 更多