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

时间:2019-01-29 20:37:01

标签: bash anaconda conda

我最近在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'.

This question(和其他类似的工具)很有帮助,但最终并不能回答我的问题,更适合Linux用户。

为澄清起见,我并不是要从(base)中删除$PS1,而是要求Conda打开终端会话时不要激活基础。

9 个答案:

答案 0 :(得分:53)

我有conda 4.6,其中包含由conda添加的类似代码块。就我而言,有一个conda配置设置可以禁用自动基本激活:

conda config --set auto_activate_base false

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

这不会使您的.bash_profile杂乱无章,但这是一个更干净的解决方案,无需手动编辑conda管理的部分。

答案 1 :(得分:6)

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

  1. 使用子命令conda config更改设置。

    conda config --set auto_activate_base false
    
  2. 实际上,前一个conda config子命令正在更改配置文件.condarc。我们可以直接修改.condarc。将以下内容添加到主目录下的.condarc中,

    # auto_activate_base (bool)
    #   Automatically activate the base environment during shell
    #   initialization. for `conda init`
    auto_activate_base: false
    
  3. 在shell的init文件中设置环境变量CONDA_AUTO_ACTIVATE_BASE。 ({bash的.bashrc,zsh的.zshrc

    CONDA_AUTO_ACTIVATE_BASE=false
    
      

    要将基于condarc的基于文件的配置参数名称转换为环境变量参数名称,请将名称全部大写前置 {{1} }。例如,可以使用CONDA_环境变量来指定conda的always_yes配置参数。

    环境设置优先于CONDA_ALWAYS_YES文件中的相应设置。

参考文献

答案 2 :(得分:5)

答案多少取决于您安装的conda的版本。对于conda> = 4.4的版本,初始化后deactivate的conda环境就足够了,因此添加

conda deactivate

正下方

# <<< conda initialize <<<

答案 3 :(得分:4)

所以最后我发现,如果像这样注释掉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可以用于激活环境,但是默认情况下不会激活。

答案 4 :(得分:2)

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

conda config --set auto_activate_base false

要激活conda基本环境:

conda activate

答案 5 :(得分:0)

如果要简化bashrc,可以删除所有conda init生成的杂波,并且只保留一行:

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

请参见Recommended change to enable conda in your shell

这将使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

答案 6 :(得分:0)

尚未指出的一件事是,如果您只想从Conda(Python)的scripts目录运行应用程序,则没有活动的环境与激活基本环境之间几乎没有区别。 @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

答案 7 :(得分:-1)

我遇到了同样的问题。最初,我删除了.bash_profile,但这不是正确的方法。安装anaconda后,它会清楚地显示有关此问题的说明。 Please check the image for solution provided by Anaconda

答案 8 :(得分:-2)

这可能是最近的蟒蛇的错误。什么对我有用:

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