那是因为 conda 的基础环境在启动时被激活。
要将 auto_activate_base 参数设置为 false,请键入:
conda config --set auto_activate_base false
2021/09/09 编辑:
如果您面临与 OP 完全相同的情况,即您正在使用 conda 来管理环境,并且想让(基本)环境看起来与终端中的系统环境没有什么不同,请查看@merv 的程序答案。请注意,提示字符串存储在某个特殊变量中,具体取决于您使用的 shell,因此如果它不适合您,请检查您的 shell 的文档。
如果您想使用系统环境而根本不使用 conda,那么我最初的答案就是您的解决方案。
感谢@merv 和@Neinstein 在评论中指出。
使用基本环境的激活钩子
对于每个 env,etc/conda/activate.d
目录中的任何脚本都将在激活后执行(同样,etc/conda/deactivate.d
脚本用于停用)。如果您添加一个脚本来删除 (base)
,类似于 @ewindes suggestion,您将获得所需的行为。
我必须为 base 创建这个目录,它只是 Anaconda/Miniconda 文件夹的根目录。例如,
mkdir -p miniconda3/etc/conda/activate.d
然后在其中创建一个简单的文件(例如,remove_base_ps1.sh
),其中包含一行:
PS1="$(echo "$PS1" | sed 's/(base) //') "
如果您使用的是 zsh,请改用它。
PROMPT=$(echo $PROMPT | sed 's/(base) //')
启动一个新的 shell 然后不会显示 (base)
,并且停用嵌套的 envs 也会处理 PS1 更改。
注意:如果要保留结尾空格,则必须在 $PS1 周围添加引号。
conda info
的输出。
默认情况下,安装 anaconda 时 auto_activate_base
设置为 True
。要检查这一点,请运行:
$ conda config --show | grep auto_activate_base
auto_activate_base: True
设置它False
conda config --set auto_activate_base False
反之亦然。
请注意,如果 changeps1
保留为 False
,它将完全隐藏 (env)
,如果您只想在激活时显示 (env)
,您可以将 changeps1
设置为 True
:
conda config --set changeps1 True
即使 env 被激活,将 changeps1 设置为 False 也会隐藏 (env) 并且即使在 auto_activate_base 设置为 True 之后也会继续隐藏 (base)。
您可以在 .bashrc 中添加一个命令,以从 PS1 中删除“(base)”字符串:
PS1=$(echo $PS1 | sed 's/(base)//')
PS1
的开头添加了一个空格并在 $
之后删除了一个空格,因此文本看起来像:_rosgori@sa6:~$cd Documents/
。此行改进了这一点:PS1="$(echo $PS1 | sed 's/(base) //') "
,不幸的是,当您激活另一个环境,然后停用时,(base)
将在那里。
如果您是 macOS 用户并且最近遇到过此类问题。这是解决方案。只需打开终端然后输入..
康达停用
这个解决方案对我有用。和以前一样,我用 anaconda python 尝试了一些东西。
对我来说,有效的是:
conda config --set changeps1 false
在 Debian 系统上,之后
conda config --set auto_activate_base false
不要忘记为了在终端中发生效果而无需重新加载 gnome
bash --login
并验证标志的状态
conda config --show | grep auto_activate_base
如果您使用 Linux
的任何破坏,此命令将适用于您,
conda config --set auto_activate_base false
比
conda deactivate
conda config --set auto_activate_base false
也很重要
对于 conda 4.12.0
(在 WOS 下),以下工作(其中所有以前的答案 - these 包括 - 没有做到这一点):
在您的 activate.bat
文件中(我的文件位于 ~/miniconda3 /Scripts/activate.bat),更改行:
@REM This may work if there are spaces in anything in %*
@CALL "%~dp0..\condabin\conda.bat" activate %*
进入
@REM This may work if there are spaces in anything in %*
@CALL "%~dp0..\condabin\conda.bat" deactivate
此行 chage/modification 在(activate.bat 文件的)部分中不起作用:
@if "%_args1_first%"=="+" if NOT "%_args1_last%"=="+" (
@CALL "%~dp0..\condabin\conda.bat" activate
@GOTO :End
)
可能是因为这取决于您的 miniconda3
(Anaconda Prompt)可执行文件的设置方式:%windir%\System32\cmd.exe "/K" some-path-to\miniconda3\Scripts\activate.bat some-path-to\miniconda3
(在我的情况下)。
警告:更新 conda
会覆盖此 (activate.bat) 文件;所以必须根据需要/更新多次修改上述行。如果你问我,这并不会破坏交易。
只需将 ~/.bashrc 中的所有行注释掉,环境变量除外:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
#__conda_setup="$('/home/<user>/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
#if [ $? -eq 0 ]; then
# eval "$__conda_setup"
#else
# if [ -f "/home/<user>/anaconda3/etc/profile.d/conda.sh" ]; then
# . "/home/<user>/anaconda3/etc/profile.d/conda.sh"
# else
export PATH="/home/<user>/anaconda3/bin:$PATH"
# fi
#fi
#unset __conda_setup
# <<< conda initialize <<<
也许是因为源活跃
我在烧瓶服务器中执行此操作时遇到了类似的问题,我激活并忘记停用虚拟环境。
因此,转到虚拟环境处于活动状态的文件夹并键入
source deactivate
使用 conda 和 vscode 时。如果你有一个虚拟环境,conda 会在你的项目中激活虚拟环境,如果没有,conda 和 vscode 会为你创建一个名为 base 的虚拟环境。
要停用它,请使用:
conda deactivate
在我的 macOS Catalina 安装中,我刚刚运行了 conda config --set env_prompt ""
。那为我删除了它。
changeps1
也会更有效;这个解决方案仍然会导致运行代码来管理 PS1,即使它只插入空字符串。
不定期副业成功案例分享
[[ $PS1 =~ ^\(base\) ]] && conda config --set auto_activate_base false
在(重新)安装之间持续存在。 (将其添加到~/.bashrc
中,在 Conda 部分之后)conda config --set changeps1 false
(base)
基础环境的前缀隐藏,这会使基础环境根本不激活。 shell 将使用系统 Python,而不是 Anaconda ! 这根本不是 OP 想要的,对于没有经验的用户会造成很多问题。如果您执行conda activate
,则会在实际加载时出现(base)
conda 前缀。这个答案有 98 多个赞成票的事实表明它是多么有害 - 98 人认为他们解决了这个问题,而他们没有。