bash 脚本停用 conda 环境

pau*_*n32 5 conda virtual-environment

在用户建议之后,我正在修改问题,以更狭窄地关注“为什么我不能从 shell 脚本运行 conda 命令”的问题。

我的默认 conda 环境名为“py37”。Shell 启动,我可以停用:

(py37) pauljohn@delllap-16:Desktop$ conda deactivate
pauljohn@delllap-16:Desktop$
Run Code Online (Sandbox Code Playgroud)

我想创建一个具有短名称的 shell 脚本来完成相同的工作。我尝试了几种变体,例如一个名为“noconda.sh”的文件:

$ cat noconda.sh
#!/bin/bash

eval "conda deactivate"   
Run Code Online (Sandbox Code Playgroud)

显然,这是一个失败:

 pauljohn@delllap-16:bin$ noconda.sh

CommandNotFoundError: Your shell has not been properly configured to use 'conda deactivate'.
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 功能处于活动状态,我使用的很多其他项目都无法正常工作。

你可能会问我的.bashrc

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/pauljohn/LinuxDownloads/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/home/pauljohn/LinuxDownloads/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/pauljohn/LinuxDownloads/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base 
    else
        \export PATH="/home/pauljohn/LinuxDownloads/anaconda3/bin/:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

# help with conda bug accessing gsettings:
# https://github.com/conda-forge/glib-feedstock/issues/19
export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/

conda deactivate
conda activate py37
Run Code Online (Sandbox Code Playgroud)

Ten*_*rye 2

根据这个答案,如果您sh使用启动文件bash -i noconda.shconda deactivate工作正常。检查原答案以了解原因。