【发布时间】: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。