Bash 默认情况下,如何防止Conda激活基本环境?

Bash 默认情况下,如何防止Conda激活基本环境?,bash,conda,Bash,Conda,我最近在我的Mac上安装了anaconda2。默认情况下,Conda配置为在我打开新的终端会话时激活基本环境 我想访问Conda命令(即,我想将Conda的路径添加到我的$path,Conda在初始化时会这样做,这样就可以了) 但是,我通常不使用python编程,我也不希望Conda在默认情况下激活基本环境 当第一次从提示符执行conda init时,conda将以下内容添加到我的.bash\u配置文件中: # >>> conda initialize >>>

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

我想访问Conda命令(即,我想将Conda的路径添加到我的
$path
,Conda在初始化时会这样做,这样就可以了)

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

当第一次从提示符执行
conda init
时,conda将以下内容添加到我的
.bash\u配置文件中:

# >>> 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 <<<
但是,当我启动新会话并尝试激活环境时,我收到以下错误消息:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
(以及其他类似的)是有帮助的,但最终不能回答我的问题,更适合linux用户


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

因此,最后我发现如果我这样注释掉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 init”管理!!
#_uuconda_setup=“$('/Users/geoff/anaconda2/bin/conda''shell.bash''hook'2>/dev/null)”
#如果[$?-等式0];然后
#评估“$\uuu conda\u设置”
#否则
如果[-f”/Users/geoff/anaconda2/etc/profile.d/conda.sh“;然后
. “/Users/geoff/anaconda2/etc/profile.d/conda.sh”
其他的
导出路径=“/Users/geoff/anaconda2/bin:$PATH”
fi
#fi
#未设置条件设置

#答案取决于您安装的
conda
的版本。对于conda>=4.4的版本,在初始化之后,
停用
conda环境就足够了,所以添加

conda deactivate
就在下面

# <<< conda initialize <<<

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

conda config --set auto_activate_base false
第一次运行时,它将在主目录中创建一个
/condarc
,并使用该设置覆盖默认设置


这不会让你的
.bash\u档案变得杂乱无章,但如果不手动编辑conda管理的部分,这是一个更干净的解决方案。

这可能是最近的anaconda的一个缺陷。对我有用的是:

步骤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 "$@"

步骤2:注释掉最后一行:
#conda activate“$@”

要禁用终端中conda基本环境的自动激活:

conda config --set auto_activate_base false
要激活conda基本环境,请执行以下操作:

conda activate

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

  • 使用sub命令
    conda config
    更改设置

    conda config--将自动激活设置为false
    
  • 事实上,前一个
    conda config
    子命令正在更改配置文件
    .condarc
    。我们可以直接修改
    .condarc
    。将以下内容添加到主目录下的
    .condarc

    # auto_activate_base (bool)
    #   Automatically activate the base environment during shell
    #   initialization. for `conda init`
    auto_activate_base: false
    
  • 在shell的init文件中设置环境变量
    CONDA\u AUTO\u ACTIVATE\u BASE
    。(
    .bashrc
    用于bash,
    .zshrc
    用于zsh)

    CONDA\u AUTO\u ACTIVATE\u BASE=false
    
    要将基于文件的配置参数名称从
    condarc
    转换为环境变量参数名称,请将名称全部大写前置
    CONDA
    。例如,可以使用
    conda\u always\u yes
    环境变量指定conda的
    always\u yes
    配置参数

    环境设置优先于
    .condarc
    文件中的相应设置

  • 工具书类
    • conda配置--描述

      • 我也面临同样的问题。最初我删除了.bash_配置文件,但这不是正确的方法。安装anaconda后,它清楚地显示了此问题的说明

        如果您想保持bashrc的简单,可以删除所有
        conda init
        生成的混乱,只保留一行:

        . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
        

        这将使conda命令在不激活基本环境的情况下可用

        如果您想在conda未安装在同一路径的其他系统上使用bashrc,您可以保留
        If
        /
        fi
        行,以避免出现错误消息,即:

        if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
            . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
        fi
        

        有一点没有被指出,如果您只想从Conda(Python)的脚本目录(如@DryLabRebel所希望的)运行应用程序,那么没有活动环境和激活基本环境之间几乎没有区别

        您可以通过conda安装和卸载,并且conda将基本环境显示为活动状态-本质上是:

        >echo$Env:CONDA_DEFAULT_Env
        >康达环境列表
        #康达环境:
        #
        基本*F:\scoop\apps\miniconda3\current
        >康达激活
        >echo$Env:CONDA_DEFAULT_Env
        基础
        >康达环境列表
        #康达环境:
        #
        基本*F:\scoop\apps\miniconda3\current
        
        这应该是可行的,而且应该是通用的。但我更喜欢一种解决方案,它可以分离我的bash配置文件,而不是添加到其中。但如果您手动编辑该部分,那么conda将无法再自动管理它。我建议不要去管它。但是,请注意,这意味着在每个终端会话中,您都会激活一个Conda环境,然后停用一个Conda环境,您不会注意到,但这与阻止默认激活不同。这不起作用,在.zshrc中打开一个带有附加Conda代码的新外壳,我会被推到(基地)环境每一次。正如梅林所说,开始新的终端导线有(基地)againGreat。你在哪里发现的设置?因为我不记得在我读过的任何地方
        if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
            . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
        fi