康达激活命令不适用于Mac

时间:2020-08-17 19:04:08

标签: macos conda

我有miniconda 4.8.3 + MacOS Catalina 10.15。我可以在终端中手动激活conda环境并启动spyder会话。

$ ~/miniconda3/bin/conda activate py3
$ ~/miniconda3/bin/conda info | grep "active environment"
$ spyder &

当我将以上内容放入脚本中时,run_spyder.sh无法正常工作,并且它抱怨“ CommandNotFoundError:您的外壳未正确配置为使用'conda activate'。”

#!/bin/bash
# run_spyder.sh
~/miniconda3/bin/conda activate py3
~/miniconda3/bin/conda info | grep "active environment"  # still print base
# spyder &

我尝试了诸如bash -i ./run_spyder.shsource ./run_spyder.sh之类的替代方案,或者添加了~/miniconda3/bin/conda init bash,但它们都不起作用。

Shell仍然是bash,没有.bashrc,在.bash_profile中,这是miniconda安装自动生成的脚本

# .bashrc_profile
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('~/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"

if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "~/miniconda3/etc/profile.d/conda.sh" ]; then
        . "~/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="~/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

1 个答案:

答案 0 :(得分:0)

conda activate函数是一个shell函数,通常在会话启动时(例如,在.bash_profile中)在shell的初始化文件中定义。 conda init函数仅将代码添加到此类初始化文件中,而实际上不会获取其添加的代码。希望这可以澄清在问题(和评论)中尝试过的困难。

相反,请尝试直接采购Conda使用的代码。像这样:

#!/bin/bash
source ~/miniconda3/etc/profile.d/conda.sh
conda activate py3
conda info | grep "active environment"
spyder &

另一种选择是在登录模式下启动bash(或zsh)会话(即为当前用户运行初始化文件)。

#!/usr/bin/env bash -l
conda deactivate    # <- may not be needed, but didn't work for me without
conda activate py3
conda info | grep "active environment"
spyder &

但是,请注意,在后一种情况下,我发现我需要首先包含一个conda deactivate,以便conda activatePATH的env中正确分配Python的优先级。 / p>