conda activate 在 bash 文件中不起作用

Pre*_*ude 9 command-line bash conda anaconda

我正在尝试编写一个名为myscrpt.sh的脚本,因此当我运行它时,它会自动创建一个虚拟环境并使用conda激活它。我的 conda 版本是 4.7.1。

这是我在myscrpt.sh开头的内容

#!/bin/bash
conda create --name myenv1
conda activate myenv1
Run Code Online (Sandbox Code Playgroud)

创建环境不是问题,但是我收到错误:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.
Run Code Online (Sandbox Code Playgroud)

如果我conda activate myenv1直接在终端中运行,则不会出现此错误。

到目前为止,我已经采取了一些措施,例如使用conda init <SHELL_NAME>它根本没有帮助。然后我在我的 bashrc 中添加了以下内容

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/<user>/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/<user>/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/<user>/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/<user>/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
Run Code Online (Sandbox Code Playgroud)

这也不起作用。接下来并根据此链接将 PATH 行中的路径更改为:

. /opt/conda/etc/profile.d/conda.sh
conda activate base
Run Code Online (Sandbox Code Playgroud)

这个是为 conda 4.4 编写的,但我希望能帮助我。

然后我尝试conda run代替conda activate,但这也没有帮助。

那么任何想法我怎样才能让它工作?:)

UPDATE1:现在我使用source ./myscript.sh,并且激活工作正常,但在conda install.

aba*_*ter 4

任何一个

  1. 添加eval $(conda shell.bash hook)到您的脚本中,或者
  2. 调用您的脚本来bash -i调用您的交互式环境


ucs*_*sky 0

Ubuntu Focal上,这是唯一对我有用的方法。

假设您的 envs 安装在~/miniconda3目录中。

source ~/miniconda3/etc/profile.d/conda.sh
conda activate myenv
Run Code Online (Sandbox Code Playgroud)