我最近在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用户。 >
为澄清起见,我不是要删除我的(base)中的$PS1我要求Conda打开终端会话时不要激活基础。

评论

您是否尝试过使用源激活?又名“老式的方法”

这个问题是如此有用,应该放在anaconda文档IMO

@fabiob接受的答案中的某些注释解释了可以在何处找到信息。我认为这应该是您在本教程中学习的第一件事。初学者不必为如此简单且显然非常普遍的要求而仔细阅读文档。

#1 楼

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

conda config --set auto_activate_base false


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

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

评论


大。您在哪里找到有关设置的信息?因为我不记得在入门教程的任何地方都阅读过它?

–DryLabRebel
19年2月7日在23:25

@DryLabRebel在任何发行说明中都没有提及,但是您可以通过运行conda config --describe在配置选项中找到它。在代码库中搜索“ auto_activate_base”似乎表明Conda v4.6.0是介绍。

– Merv
19 Mar 10 '19 at 19:57

糟糕,错过了您的问题。抱歉! @merv是正确的,因为它在配置中。我针对不同的问题寻找不同的选项,并看到了该选项。

– jieong
19-3-22在2:04



@DryLabRebel安装程序初始化Anaconda后,它会打印出:如果您不希望在启动时激活conda的基本环境,请将auto_activate_base参数设置为false:conda config --set auto_activate_base false感谢您安装Anaconda3!

–志远
19年8月25日在14:48

非常感谢您的回答。 IMO这应该是默认行为。对于那些使用Linux的人,他们可能想知道是否应该遵循链接的Linux问题,只要遵循此方法,无论使用哪种操作系统,它似乎都可以工作(此处是Linux Mint)

–卡梅尔
19-10-27在17:34



#2 楼

答案在某种程度上取决于您所安装的conda的版本。对于conda> = 4.4的版本,初始化后足以在conda环境中进行deactivate,因此在


右下方添加

conda deactivate

# <<< conda initialize <<<


评论


那应该起作用,并且应该概括。但是我更喜欢一个使我的bash配置文件混乱而不是添加的解决方案。

–DryLabRebel
19年2月3日在20:10

但是,如果您手动编辑该部分,则conda不能再对其进行自动管理。我建议不要管它。

–达斯比特
19年2月3日在23:06

但是请注意,这意味着在每个终端会话中,您都会激活一个Conda环境,然后停用一个您不会注意到的Conda环境,但这与阻止默认激活不同。

–DryLabRebel
19-2-4在23:06



这是行不通的,每次在.zshrc中使用附加的conda代码打开一个新的shell时,我都会被推送到(基本)环境中。

–梅林
19年7月18日在22:38

就像Merlin所说的那样,启动新的终端导致再次拥有(基础)

–jreft56
19年9月2日在6:14

#3 楼

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




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

 conda config --set auto_activate_base false
 



实际上,以前的conda config子命令正在更改配置文件.condarc。我们可以直接修改.condarc。在主目录下的.condarc中添加以下内容:在shell的init文件中设置环境变量CONDA_AUTO_ACTIVATE_BASE。 (bash为.bashrc,zsh为.zshrc

 CONDA_AUTO_ACTIVATE_BASE=false
 



condarc基于文件的配置参数名称更改为环境变量参数名称,并将名称全部大写并在CONDA_前面加上。例如,可以使用环境变量always_yes来指定conda的CONDA_ALWAYS_YES配置参数。


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


参考文献


面向高级用户的Conda配置引擎
使用.condarc conda配置文件
conda config --describe
Conda 4.6版本


评论


好答案。我在脚本中使用env var方法来控制此行为,如下所示:export CONDA_AUTO_ACTIVATE_BASE = false;评估“ $(conda shell.bash hook)”

–凯文·奥尔瑞(Kevin Olree)
20 Jan 17 '20:25



我必须将export CONDA_AUTO_ACTIVATE_BASE = false添加到我的.zshrc中,选项3才能正常工作。

–诺曼纽斯
20年4月1日在16:49

#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可用于激活环境,但默认情况下不会激活。

评论


不幸的是,如果块内容是由其他脚本管理的(如代码块开头所述),则此更改可能会被其他脚本替换或回滚。

–库卡纳尼
19-09-18在19:49

@DryLabRebel-您是否找到了一种健壮的方法来消除rc文件中的混乱情况?我也会对此感兴趣,因为它能够像对待其他环境一样对待conda,而不是使事情变得混乱

–baxx
20-2-22在15:53

@baxx不,我没有。如果您想要最新版本的conda,并且希望它能正常工作,那么您确实需要初始化命令。

–DryLabRebel
20-2-23在20:23

好的,我觉得如果您仅将conda env安装在项目目录中,而不是在集中位置,可能会有解决方法。还不太确定

–baxx
20-2-23在20:28

这是我不明白的地方:为什么当我调用conda activate而不是强迫我永久更改我的shell环境时,Conda为什么不能即时(即暂时)更改shell设置?我的意思是,将路径添加到$ PATH没问题,但是我当然不希望Conda更改我的$ PS1。

– Balu
20年7月7日,11:11



#5 楼

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

conda config --set auto_activate_base false


要激活conda基本环境:

conda activate


评论


嘿,这个答案是正确的,但实际上与接受的答案相同。我的问题与激活公寓无关,这是您在阅读教程时首先学到的东西之一。考虑添加一些以前的答案中尚未提供的有用的相关信息。

–DryLabRebel
19/09/11在23:09



我一直在寻找禁用自动后如何手动激活。谢谢!

–eigil
19年11月21日在18:50

这有帮助。我也在寻找禁用自动激活后如何手动激活conda的方法。

–克里斯·恩朱古纳(Chris Njuguna)
20年1月8日在14:42

#6 楼

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

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


请参阅建议的更改以在您的conda中启用conda 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


评论


如果您想使bashrc保持简单,则可以删除所有由conda init生成的杂波,并且仅保留一行“ clutter”,即!该块中的内容由“ conda init”管理! ?这样做而不是仅更改适当的Conda设置/配置选项有什么好处?

– AMC
20年6月11日,0:39

#7 楼

尚未指出的一件事是,如果您只想从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基本环境时,其bin目录(包括ao python,pip和一系列较小的实用程序)被添加到PATH的开头,覆盖了系统。

–zwets
20年8月5日,12:39

#8 楼

这可能是最近的蟒蛇的错误。适用于我的方法:

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


step2:注释掉最后一行:# conda activate "$@"

#9 楼

我遇到了同样的问题。最初,我删除了.bash_profile,但这不是正确的方法。安装anaconda后,它会清楚地显示有关此问题的说明。请检查图像以获取Anaconda提供的解决方案