我想访问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打开终端会话时不要激活基础。#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 "$@"
评论
您是否尝试过使用源激活?又名“老式的方法”这个问题是如此有用,应该放在anaconda文档IMO
中
@fabiob接受的答案中的某些注释解释了可以在何处找到信息。我认为这应该是您在本教程中学习的第一件事。初学者不必为如此简单且显然非常普遍的要求而仔细阅读文档。