Bash 默认情况下,如何防止Conda激活基本环境?
我最近在我的Mac上安装了anaconda2。默认情况下,Conda配置为在我打开新的终端会话时激活基本环境 我想访问Conda命令(即,我想将Conda的路径添加到我的Bash 默认情况下,如何防止Conda激活基本环境?,bash,conda,Bash,Conda,我最近在我的Mac上安装了anaconda2。默认情况下,Conda配置为在我打开新的终端会话时激活基本环境 我想访问Conda命令(即,我想将Conda的路径添加到我的$path,Conda在初始化时会这样做,这样就可以了) 但是,我通常不使用python编程,我也不希望Conda在默认情况下激活基本环境 当第一次从提示符执行conda init时,conda将以下内容添加到我的.bash\u配置文件中: # >>> conda initialize >>>
$path
,Conda在初始化时会这样做,这样就可以了)
但是,我通常不使用python编程,我也不希望Conda在默认情况下激活基本环境
当第一次从提示符执行conda init
时,conda将以下内容添加到我的.bash\u配置文件中:
# >>> 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 <<<
但是,当我启动新会话并尝试激活环境时,我收到以下错误消息:
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
(以及其他类似的)是有帮助的,但最终不能回答我的问题,更适合linux用户
明确地说,我不是要求从我的$PS1
中删除(base)
,我是要求Conda在打开终端会话时不要激活base。因此,最后我发现如果我这样注释掉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 init”管理!!
#_uuconda_setup=“$('/Users/geoff/anaconda2/bin/conda''shell.bash''hook'2>/dev/null)”
#如果[$?-等式0];然后
#评估“$\uuu conda\u设置”
#否则
如果[-f”/Users/geoff/anaconda2/etc/profile.d/conda.sh“;然后
. “/Users/geoff/anaconda2/etc/profile.d/conda.sh”
其他的
导出路径=“/Users/geoff/anaconda2/bin:$PATH”
fi
#fi
#未设置条件设置
#答案取决于您安装的conda
的版本。对于conda>=4.4的版本,在初始化之后,停用
conda环境就足够了,所以添加
conda deactivate
就在下面
# <<< conda initialize <<<
#我有一个conda 4.6,其中包含一个由conda添加的类似代码块。在我的例子中,有一个conda配置设置来禁用自动基本激活:
conda config --set auto_activate_base false
第一次运行时,它将在主目录中创建一个/condarc
,并使用该设置覆盖默认设置
这不会让你的.bash\u档案变得杂乱无章,但如果不手动编辑conda管理的部分,这是一个更干净的解决方案。这可能是最近的anaconda的一个缺陷。对我有用的是:
步骤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“$@”
要禁用终端中conda基本环境的自动激活:
conda config --set auto_activate_base false
要激活conda基本环境,请执行以下操作:
conda activate
在conda
4.6之后,有3种方法可以实现这一点。(最后一个方法具有最高优先级。)
使用sub命令conda config
更改设置
conda config--将自动激活设置为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\u AUTO\u ACTIVATE\u BASE
。(.bashrc
用于bash,.zshrc
用于zsh)
CONDA\u AUTO\u ACTIVATE\u BASE=false
要将基于文件的配置参数名称从condarc
转换为环境变量参数名称,请将名称全部大写和前置CONDA
。例如,可以使用conda\u always\u yes
环境变量指定conda的always\u yes
配置参数
环境设置优先于.condarc
文件中的相应设置
工具书类
conda配置--描述
我也面临同样的问题。最初我删除了.bash_配置文件,但这不是正确的方法。安装anaconda后,它清楚地显示了此问题的说明 如果您想保持bashrc的简单,可以删除所有
conda init
生成的混乱,只保留一行:
. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
看
这将使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
有一点没有被指出,如果您只想从Conda(Python)的脚本目录(如@DryLabRebel所希望的)运行应用程序,那么没有活动环境和激活基本环境之间几乎没有区别
您可以通过conda安装和卸载,并且conda将基本环境显示为活动状态-本质上是:
>echo$Env:CONDA_DEFAULT_Env
>康达环境列表
#康达环境:
#
基本*F:\scoop\apps\miniconda3\current
>康达激活
>echo$Env:CONDA_DEFAULT_Env
基础
>康达环境列表
#康达环境:
#
基本*F:\scoop\apps\miniconda3\current
这应该是可行的,而且应该是通用的。但我更喜欢一种解决方案,它可以分离我的bash配置文件,而不是添加到其中。但如果您手动编辑该部分,那么conda将无法再自动管理它。我建议不要去管它。但是,请注意,这意味着在每个终端会话中,您都会激活一个Conda环境,然后停用一个Conda环境,您不会注意到,但这与阻止默认激活不同。这不起作用,在.zshrc中打开一个带有附加Conda代码的新外壳,我会被推到(基地)环境每一次。正如梅林所说,开始新的终端导线有(基地)againGreat。你在哪里发现的设置?因为我不记得在我读过的任何地方
if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
fi