【问题标题】:Why is conda not activating my environment in this shell script? [duplicate]为什么 conda 没有在这个 shell 脚本中激活我的环境? [复制]
【发布时间】:2023-03-11 04:06:02
【问题描述】:

这是我的脚本。我之前设置了一个名为 myenv 的环境。

我知道我正确地采购了 conda,因为如果我故意给脚本一个错误的环境名称,它会输出一条错误消息。但是如果我用 myenv 调用它,它会运行但什么也不做。我的环境保持为(基础)。

#!/bin/zsh
# MAKE SURE YOU HAVE MINICONDA INSTALLED

CONDA_BASE=$(conda info --base)    

source $CONDA_BASE/etc/profile.d/conda.sh

conda activate myenv

我正在使用 MacOS Catalina。其他所有设置都正确,并且所有其他 conda 命令都可以正常工作。我能想到的唯一原因是我的shell由于某种原因取消了命令......这有点莫名其妙。

感谢您对此问题的任何帮助。

【问题讨论】:

  • 所以你正在运行脚本(即链接 ./ 的东西),它运行,但你的环境没有改变(在你运行 ./ 的 shell 中)期待
  • 是的,就是这样
  • 您运行的脚本发生在一个新的解释器中,而不是您在其中交互式输入命令的那个。因此,它们无法更改该预先存在的交互式解释器的状态。假设(这是一个重要的假设)conda activate 正在调用一个 shell 函数来更改现有 shell 的状态,那么在它被调用的脚本退出后预计不会有任何进一步的影响。
  • 实际上,这根本不是一个重要的假设。如果不是这样,您就不需要在conda.sh 中获取资源,然后才能调用conda activate

标签: shell conda zsh


【解决方案1】:

要让您的脚本修改交互式 shell 的状态,您需要将其作为源代码输入到您的解释器中,或者将其定义为函数而不是脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多