我最近在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打开终端会话时不要激活基础。
答案 0 :(得分:53)
我有conda 4.6,其中包含由conda添加的类似代码块。就我而言,有一个conda配置设置可以禁用自动基本激活:
conda config --set auto_activate_base false
第一次运行它时,它将在您的主目录中创建一个./condarc
并使用该设置覆盖默认设置。
这不会使您的.bash_profile
杂乱无章,但这是一个更干净的解决方案,无需手动编辑conda管理的部分。
答案 1 :(得分:6)
在conda
4.6之后,有3种方法可以实现此目的。 (最后一种方法具有最高优先级。)
使用子命令conda config
更改设置。
conda config --set auto_activate_base 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_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 "$@"