我有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.sh
或source ./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 <<<
答案 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 activate
在PATH
的env中正确分配Python的优先级。 / p>