更新conda后如何从终端提示中删除(base)
How to remove (base) from terminal prompt after updating conda
更新 miniconda3 后,每当我打开终端时,它都会在我的用户名和主机前面显示“(base)”。
在这个回答中 post https://askubuntu.com/a/1113206/315699 建议使用
conda config --set changeps1 False
删除它。
但这会删除任何 conda 环境的指示。我只想为基本的删除它,这样我就可以保持它始终处于活动状态并可以访问它的 python 和已安装的软件包,而不必总是看到这个(基本)占用 space。
使用 base
env 的激活钩子
对于每个环境,etc/conda/activate.d
目录中的任何脚本都将被执行 post-激活(同样 etc/conda/deactivate.d
停用脚本)。如果您添加一个脚本来删除 (base)
,类似于 ,您将获得您想要的行为。
我必须为 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)
,停用嵌套环境也会处理 PS1 更改。
注意:如果要保留结尾空格,则必须在 $PS1 周围添加引号。
您可以向您的 .bashrc 添加命令以从 PS1:
中删除“(base)”字符串
PS1=$(echo $PS1 | sed 's/(base)//')
那是因为conda的基础环境在启动时被激活了。
要将 auto_activate_base 参数设置为 false,请键入:
conda config --set auto_activate_base false
2021/09/09 编辑:
如果您面临与 OP 完全相同的情况,即您正在使用 conda 管理环境,并希望使(基本)环境看起来与终端中的系统环境没有区别,请查看@merv 的答案程序。请注意,提示字符串存储在某个特殊变量中,具体取决于您使用的 shell,因此如果它对您不起作用,请检查您的 shell 的文档。
如果你想使用系统环境而不使用conda,我的原答案是适合你的解决方案。
感谢@merv 和@Neinstein 在评论中指出。
默认情况下,安装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
Setting changeps1
to False
will hide (env)
even if the env
is activated and will keep hiding (base)
even after auto_activate_base
is set to True
.
使用 conda 和 vscode 时。如果您有一个虚拟环境,conda 会激活您项目中的虚拟环境,如果没有,conda 会 vscode 为您创建一个名为 base 的虚拟环境。
要停用它,请使用:
conda deactivate
如果您是 macOS 用户并且最近遇到过此类问题。这是解决方案。只需打开终端然后输入..
conda deactivate
这个解决方案对我有用。和以前一样,我用 anaconda python.
尝试了一些东西
对我来说,有效的是:
conda config --set changeps1 false
在我的 macOS Catalina 安装中,我只是 运行 conda config --set env_prompt ""
。那为我删除了它。
简单的注释掉~/.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 <<<
在 Debian 系统上,在
之后
conda config --set auto_activate_base false
不要忘记为了在不重新加载 gnome 的情况下在终端中发生效果
bash --login
并验证标志的状态
conda config --show | grep auto_activate_base
如果您正在使用 Linux
的任何 destro,此命令将适用于您,
conda config --set auto_activate_base false
比
conda deactivate
可能是源码激活的原因
我在 flask 服务器中执行此操作时遇到了类似的问题,我激活并忘记停用虚拟环境。
然后转到虚拟环境处于活动状态的文件夹并键入
source deactivate
对于 conda 4.12.0
(在 WOS 下),以下方法有效(其中包含所有先前的答案 - - 没有成功):
在你的 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) 文件;所以必须修改以上行 needed/updated 次。如果你问我的话,deal-breaker 并不多。
更新 miniconda3 后,每当我打开终端时,它都会在我的用户名和主机前面显示“(base)”。
在这个回答中 post https://askubuntu.com/a/1113206/315699 建议使用
conda config --set changeps1 False
删除它。
但这会删除任何 conda 环境的指示。我只想为基本的删除它,这样我就可以保持它始终处于活动状态并可以访问它的 python 和已安装的软件包,而不必总是看到这个(基本)占用 space。
使用 base
env 的激活钩子
对于每个环境,etc/conda/activate.d
目录中的任何脚本都将被执行 post-激活(同样 etc/conda/deactivate.d
停用脚本)。如果您添加一个脚本来删除 (base)
,类似于
我必须为 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)
,停用嵌套环境也会处理 PS1 更改。
注意:如果要保留结尾空格,则必须在 $PS1 周围添加引号。
您可以向您的 .bashrc 添加命令以从 PS1:
中删除“(base)”字符串PS1=$(echo $PS1 | sed 's/(base)//')
那是因为conda的基础环境在启动时被激活了。
要将 auto_activate_base 参数设置为 false,请键入:
conda config --set auto_activate_base false
2021/09/09 编辑:
如果您面临与 OP 完全相同的情况,即您正在使用 conda 管理环境,并希望使(基本)环境看起来与终端中的系统环境没有区别,请查看@merv 的答案程序。请注意,提示字符串存储在某个特殊变量中,具体取决于您使用的 shell,因此如果它对您不起作用,请检查您的 shell 的文档。
如果你想使用系统环境而不使用conda,我的原答案是适合你的解决方案。
感谢@merv 和@Neinstein 在评论中指出。
默认情况下,安装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
Setting
changeps1
toFalse
will hide(env)
even if theenv
is activated and will keep hiding(base)
even afterauto_activate_base
is set toTrue
.
使用 conda 和 vscode 时。如果您有一个虚拟环境,conda 会激活您项目中的虚拟环境,如果没有,conda 会 vscode 为您创建一个名为 base 的虚拟环境。
要停用它,请使用:
conda deactivate
如果您是 macOS 用户并且最近遇到过此类问题。这是解决方案。只需打开终端然后输入..
conda deactivate
这个解决方案对我有用。和以前一样,我用 anaconda python.
尝试了一些东西对我来说,有效的是:
conda config --set changeps1 false
在我的 macOS Catalina 安装中,我只是 运行 conda config --set env_prompt ""
。那为我删除了它。
简单的注释掉~/.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 <<<
在 Debian 系统上,在
之后conda config --set auto_activate_base false
不要忘记为了在不重新加载 gnome 的情况下在终端中发生效果
bash --login
并验证标志的状态
conda config --show | grep auto_activate_base
如果您正在使用 Linux
的任何 destro,此命令将适用于您,
conda config --set auto_activate_base false
比
conda deactivate
可能是源码激活的原因
我在 flask 服务器中执行此操作时遇到了类似的问题,我激活并忘记停用虚拟环境。
然后转到虚拟环境处于活动状态的文件夹并键入
source deactivate
对于 conda 4.12.0
(在 WOS 下),以下方法有效(其中包含所有先前的答案 -
在你的 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) 文件;所以必须修改以上行 needed/updated 次。如果你问我的话,deal-breaker 并不多。