我最近在我的Mac上安装了anaconda2。默认情况下,Conda被配置为当我打开一个新的终端会话时激活基本环境。

我想要访问Conda命令(即我想要Conda的路径添加到我的$ path, Conda在初始化时这样做,所以这很好)。

但是,我通常不使用python编程,并且我不希望Conda在默认情况下激活基本环境。

当第一次从提示符执行conda init时,conda将以下内容添加到我的.bash_profile中:

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

如果我注释掉了整个块,那么我就不能激活任何Conda环境。

我试着把整个街区都注释掉,除了

export PATH="/Users/geoff/anaconda2/bin:$PATH"

但是当我开始一个新的会话并尝试激活一个环境时,我得到了这个错误消息:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

这个问题(以及其他类似的问题)很有帮助,但并不能最终回答我的问题,它更适合linux用户。

需要明确的是,我并不是要求从我的$PS1中删除(base),我是要求Conda在我打开终端会话时不激活base。


当前回答

有一件事没有指出,如果你只是想从Conda (Python)的脚本目录(正如@DryLabRebel想要的那样)运行应用程序,没有活动环境和激活基础环境之间几乎没有区别。

你可以通过conda安装和卸载,conda显示基本环境为活动状态——本质上是:

> echo $Env:CONDA_DEFAULT_ENV
> conda env list
# conda environments:
#
base                  *  F:\scoop\apps\miniconda3\current

> conda activate
> echo $Env:CONDA_DEFAULT_ENV
base
> conda env list
# conda environments:
#
base                  *  F:\scoop\apps\miniconda3\current

其他回答

所以最后我发现,如果我像这样注释掉Conda初始化块:

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

这完全是我想要的。也就是说,如果需要,Conda可用于激活环境,但默认情况下不能激活。

答案取决于您安装的conda版本。对于conda >= 4.4版本,在初始化后禁用conda环境应该足够了,因此添加

conda deactivate

正确的下面

# <<< conda initialize <<<

我在conda 4.6中添加了类似的代码块。在我的例子中,有一个conda配置设置来禁用自动基础激活:

conda config --set auto_activate_base false

第一次运行它时,它将在您的主目录中创建一个.condarc,并使用该设置来覆盖默认设置。

这不会使你的.bash_profile文件变得凌乱,但它是一个更干净的解决方案,无需手动编辑conda管理的部分。

在conda 4.6之后,有3种方法可以实现这一点。(最后一种方法优先级最高。)

Use sub-command conda config to change the setting. conda config --set auto_activate_base false In fact, the former conda config sub-command is changing configuration file .condarc. We can modify .condarc directly. Add following content into .condarc under your home directory, # auto_activate_base (bool) # Automatically activate the base environment during shell # initialization. for `conda init` auto_activate_base: false Set environment variable CONDA_AUTO_ACTIVATE_BASE in the shell's init file. (.bashrc for bash, .zshrc for zsh) export CONDA_AUTO_ACTIVATE_BASE=false To convert from the condarc file-based configuration parameter name to the environment variable parameter name, make the name all uppercase and prepend CONDA_. For example, conda’s always_yes configuration parameter can be specified using a CONDA_ALWAYS_YES environment variable. The environment settings take precedence over corresponding settings in .condarc file.

参考文献

用于高级用户的Conda配置引擎 使用condarc conda配置文件 Conda config——描述 Conda 4.6发布

这可能是最近发现的水蟒的虫子。对我有用的方法:

步骤1:vim /anaconda/bin/activate,它显示:

 #!/bin/sh                                                                                
 _CONDA_ROOT="/anaconda"
 # Copyright (C) 2012 Anaconda, Inc
 # SPDX-License-Identifier: BSD-3-Clause
 \. "$_CONDA_ROOT/etc/profile.d/conda.sh" || return $?
 conda activate "$@"

第二步:注释掉最后一行:# conda激活"$@"