如何防止Conda默认激活基础环境?

Dry*_*bel 124 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 <<<
Run Code Online (Sandbox Code Playgroud)

如果我注释掉整个块,那么我就无法激活任何Conda环境.

我试图评论整个街区除外

export PATH="/Users/geoff/anaconda2/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

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

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
Run Code Online (Sandbox Code Playgroud)

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

为了澄清,我不要求删除(base)从我$PS1我所要求的康达当我打开一个终端会话不激活基地.

jie*_*ong 248

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

./condarc

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

这不会破坏您的混乱,./condarc但它是一个更清洁的解决方案,无需手动编辑conda管理的部分.

  • 非常感谢您的回答。IMO 这应该是默认行为。对于那些使用 Linux 的人来说,他们可能想知道是否应该遵循链接的 Linux 问题,只要遵循这个,它似乎就可以工作,无论操作系统如何(这里是 Linux Mint) (13认同)
  • 伟大的。你是从哪里知道设置的?因为我不记得在介绍性教程的任何地方读过它? (3认同)
  • @DryLabRebel安装程序初始化Anaconda后,它会打印出:如果您不希望在启动时激活conda的基本环境,请将auto_activate_base参数设置为false:`conda config --set auto_activate_base false`感谢您安装Anaconda3! (3认同)
  • @DryLabRebel在任何发行说明中都没有提及,但是您可以通过运行`conda config --describe`在配置选项中找到它。在代码库中搜索“ auto_activate_base”似乎表明Conda v4.6.0是介绍。 (2认同)
  • 哎呀,错过了你的问题。对不起!@merv 是正确的,因为它在配置中。我正在寻找针对不同问题的不同选项,并看到了该选项。 (2认同)
  • 谢谢,这对我有很大帮助。要重新激活它,只需使用“conda activate” (2认同)

小智 18

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

conda config --set auto_activate_base false
Run Code Online (Sandbox Code Playgroud)

要激活 conda 基础环境:

conda activate
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找如何在禁用自动后手动激活。谢谢! (5认同)
  • 嘿,这个答案是正确的,但与接受的答案几乎相同。我的问题与激活公寓无关,这是您在学习教程时首先学到的东西之一。考虑添加一些先前答案中尚未提供的有用的相关信息。 (4认同)

dar*_*ith 17

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

conda deactivate
Run Code Online (Sandbox Code Playgroud)

就在下面

# <<< conda initialize <<<
Run Code Online (Sandbox Code Playgroud)

  • 这是行不通的,打开一个新的 shell,并在 .zshrc 中附加 conda 代码,我每次都会被推入(基本)环境。 (7认同)
  • 那应该起作用,并且应该概括。但是我更喜欢一个使我的bash配置文件混乱的解决方案,而不是添加它。 (3认同)
  • 正如梅林所说,启动新的终端会再次拥有(基地) (3认同)
  • 但是,如果您手动编辑该部分,则conda不能再对其进行自动管理。我建议不要管它。 (2认同)
  • 但是请注意,这意味着在每个终端会话中您都会激活 Conda 环境,然后停用您不会注意到的 Conda 环境,但这与阻止默认激活不同。 (2认同)

Dry*_*bel 14

所以最后我发现,如果我像这样注释掉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 <<<
Run Code Online (Sandbox Code Playgroud)

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

  • 这是我不明白的地方:当我调用 `conda activate` 时,为什么 Conda 不能动态(即暂时)更改 shell 设置,而不是强制我永久更改 shell 环境?我的意思是,添加一个路径到 `$PATH` 是没有问题的,但我当然不希望 Conda 改变我的 `$PS1`。 (3认同)
  • 不幸的是,如果块内容是由其他脚本管理的(如代码块开头所述),则此更改可能会被其他脚本替换或回滚。 (2认同)

Sim*_*mba 5

conda4.6 之后,有3种方法可以达到此目的。(最后一种方法具有最高优先级。)

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

    conda config --set auto_activate_base false
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. CONDA_AUTO_ACTIVATE_BASE在外壳的init文件中设置环境变量。(.bashrc对于bash,.zshrc对于zsh)

    # auto_activate_base (bool)
    #   Automatically activate the base environment during shell
    #   initialization. for `conda init`
    auto_activate_base: false
    
    Run Code Online (Sandbox Code Playgroud)

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

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

参考文献

  • 我的 .bashrc 中有 `export CONDA_AUTO_ACTIVATE_BASE=false` ,这没有什么区别 (3认同)
  • 当我将它放在 .bashrc 中的 conda 块之前时,它对我有用,以便 conda 在初始化期间知道这一点。 (3认同)
  • 我必须将 `export CONDA_AUTO_ACTIVATE_BASE=false` 添加到我的 .zshrc 中,选项 3 才能工作。 (2认同)