ChatGPT解决这个技术问题 Extra ChatGPT

如何在更新 conda 后从终端提示符中删除(基础)

更新 miniconda3 后,每当我打开终端时,它都会在我的用户名和主机前显示“(base)”。

在此回答帖子 https://askubuntu.com/a/1113206/315699 中,建议使用

conda config --set changeps1 False

删除它。

但这将消除任何 conda 环境的指示。我只想将它删除为基本的,这样我就可以保持它始终处于活动状态并可以访问它的 python 和安装的包,而不必总是看到这个(基本)占用空间。


Y
Yokissa

那是因为 conda 的基础环境在启动时被激活。

要将 auto_activate_base 参数设置为 false,请键入:

conda config --set auto_activate_base false

2021/09/09 编辑:

如果您面临与 OP 完全相同的情况,即您正在使用 conda 来管理环境,并且想让(基本)环境看起来与终端中的系统环境没有什么不同,请查看@merv 的程序答案。请注意,提示字符串存储在某个特殊变量中,具体取决于您使用的 shell,因此如果它不适合您,请检查您的 shell 的文档。

如果您想使用系统环境而根本不使用 conda,那么我最初的答案就是您的解决方案。

感谢@merv 和@Neinstein 在评论中指出。


OP 中的问题是他们不希望 PS1 更改,即使在激活基础时也是如此。
这就是我要找的。
[[ $PS1 =~ ^\(base\) ]] && conda config --set auto_activate_base false 在(重新)安装之间持续存在。 (将其添加到 ~/.bashrc 中,在 Conda 部分之后)
@merv 你可以通过运行这个来做到这一点:conda config --set changeps1 false
这不会使 (base) 基础环境的前缀隐藏,这会使基础环境根本不激活。 shell 将使用系统 Python,而不是 Anaconda ! 这根本不是 OP 想要的,对于没有经验的用户会造成很多问题。如果您执行 conda activate,则会在实际加载时出现 (base) conda 前缀。这个答案有 98 多个赞成票的事实表明它是多么有害 - 98 人认为他们解决了这个问题,而他们没有。
c
cnu

使用基本环境的激活钩子

对于每个 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 4.8.3;Python 3.8.3)。我的外壳中仍然有相同的“(基础)”。
@Awaaaaarghhh 提出一个新问题,详细说明它是如何失败的,我会看看。在问题中包含 conda info 的输出。
@merv 可能只需要在执行命令后重新启动 PC。 - 只是重新启动外壳并没有帮助。
最后有一个额外的空间。 OTOH 不需要在这种 bash 分配中添加双引号。
J
Jovial Joe Jayarson

默认情况下,安装 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)。


这增加了 this other early answer 中没有的什么?
这是在 macOS Catalina (10.15) 上使用 OhMyZsh 在 zsh 中为我工作的那个,当接受的答案没有时,可能是因为提示的完成方式与 bash 略有不同
e
ewindes

您可以在 .bashrc 中添加一个命令,以从 PS1 中删除“(base)”字符串:

PS1=$(echo $PS1 | sed 's/(base)//')

您的答案在 PS1 的开头添加了一个空格并在 $ 之后删除了一个空格,因此文本看起来像:_rosgori@sa6:~$cd Documents/。此行改进了这一点:PS1="$(echo $PS1 | sed 's/(base) //') ",不幸的是,当您激活另一个环境,然后停用时,(base) 将在那里。
c
codexaxor

如果您是 macOS 用户并且最近遇到过此类问题。这是解决方案。只需打开终端然后输入..

康达停用

这个解决方案对我有用。和以前一样,我用 anaconda python 尝试了一些东西。


C
Cecília Assis

对我来说,有效的是:

conda config --set changeps1 false 

但是,您如何才能仅在 base 和其他环境中阻止它呢?那是OP的问题。而是回答 this question
A
Artem Kozlenkov

在 Debian 系统上,之后

conda config --set auto_activate_base false

不要忘记为了在终端中发生效果而无需重新加载 gnome

bash --login

并验证标志的状态

conda config --show | grep auto_activate_base


M
Manishyadav

如果您使用 Linux 的任何破坏,此命令将适用于您,

conda config --set auto_activate_base false

conda deactivate

它有效,但运行 conda config --set auto_activate_base false 也很重要
好的,我会记住这一点的!
M
Manuel F

对于 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) 文件;所以必须根据需要/更新多次修改上述行。如果你问我,这并不会破坏交易。


T
Timin

只需将 ~/.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 <<<

除了从 shell 标签中删除“base”之外,您应该确保知道注释这些行的后果。
我强烈建议不要这样做。那些双感叹号警告表明你不应该编辑这个区域。此外,这删除了所有较新的 Conda v4.4+ shell 功能,仅保留了 v4.4 之前的 PATH 管理,开发人员仅将其作为绝对基线回退(例如,仅适用于不受支持的 shell)。
注释掉或简单地删除这些行并没有错,您也可以选择不让 conda 将这些行添加到您的 .bashrc。只要您根据自己的喜好设置 PATH 等环境变量,就不需要存在这些行
B
Binwin Viju LatentView

也许是因为源活跃

我在烧瓶服务器中执行此操作时遇到了类似的问题,我激活并忘记停用虚拟环境。

因此,转到虚拟环境处于活动状态的文件夹并键入

source deactivate

K
Khyar Ali

使用 conda 和 vscode 时。如果你有一个虚拟环境,conda 会在你的项目中激活虚拟环境,如果没有,conda 和 vscode 会为你创建一个名为 base 的虚拟环境。

要停用它,请使用:

conda deactivate

M
Matt

在我的 macOS Catalina 安装中,我刚刚运行了 conda config --set env_prompt ""。那为我删除了它。


这将删除所有内容 - 请重新阅读 OP(只希望更改 base)。即使这是所希望的,changeps1 也会更有效;这个解决方案仍然会导致运行代码来管理 PS1,即使它只插入空字符串。