如何在更新 conda 后从终端提示符中删除(基础)
Posted
技术标签:
【中文标题】如何在更新 conda 后从终端提示符中删除(基础)【英文标题】:How to remove (base) from terminal prompt after updating conda 【发布时间】:2019-08-05 21:20:57 【问题描述】:更新 miniconda3 后,每当我打开终端时,它都会在我的用户名和主机前显示“(base)”。
在这个答案帖子https://askubuntu.com/a/1113206/315699 中建议使用
conda config --set changeps1 False
删除它。
但这会删除任何 conda 环境的指示。我想只为基础版本删除它,以便我可以保持它始终处于活动状态并可以访问它的 python 和已安装的包,而不必总是看到这个(基础)占用空间。
【问题讨论】:
【参考方案1】:那是因为 conda 的基础环境在启动时被激活。
要将 auto_activate_base 参数设置为 false,请键入:
conda config --set auto_activate_base false
于 2021 年 9 月 9 日编辑:
如果您面临与 OP 完全相同的情况,即您正在使用 conda 来管理环境,并且想要使(基本)环境看起来与终端中的系统环境没有什么不同,请查看 @merv 对程序的回答.请注意,提示字符串存储在某个特殊变量中,具体取决于您使用的 shell,因此如果它不适合您,请检查您的 shell 的文档。
如果你想使用系统环境而不使用 conda,我原来的答案就是你的解决方案。
感谢@merv 和@Neinstein 在 cmets 中指出。
【讨论】:
OP 中的问题是,即使 base 被激活,他们也不希望 PS1 发生变化。 这就是我要找的。span>[[ $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 人认为他们解决了这个问题,但实际上并没有。【参考方案2】:
在 Debian 系统上,之后
conda config --set auto_activate_base false
不要忘记在不重新加载 gnome 的情况下在终端中发生效果
bash --login
并验证标志的状态
conda config --show | grep auto_activate_base
【讨论】:
【参考方案3】:默认情况下,安装 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
将
changeps1
设置为False
将隐藏(env)
,即使env
已激活,也会继续隐藏(base)
,即使在auto_activate_base
设置为True
后也是如此。
【讨论】:
这增加了this other early answer中没有的什么? 这是在 zsh 中使用 OhMyZsh 在 macOS Catalina (10.15) 上为我工作的那个,当接受的答案没有时,可能是因为提示的完成方式与 bash 略有不同【参考方案4】:使用base
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。 - 只是重新启动 shell 没有帮助。
末尾多了一个空格。 OTOH 不需要在这种 bash 分配中添加双引号。【参考方案5】:
只需注释掉~/.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 <<<
【讨论】:
除了从外壳标签中删除“base”之外,您还应该确保知道注释这些行的后果。 我强烈建议不要这样做。 这些双感叹号警告表明您不应编辑此区域。此外,这删除了所有较新的 Conda v4.4+ shell 功能,只保留了 v4.4 之前的 PATH 管理,开发人员仅将其作为绝对基线回退(例如,仅适用于不受支持的 shell)。【参考方案6】:在我的 macOS Catalina 安装中,我刚刚运行了 conda config --set env_prompt ""
。这为我删除了它。
【讨论】:
所有内容都会删除它 - 请重新阅读 OP(只希望更改 base)。即使这是所希望的,changeps1
也会更有效;这个解决方案仍然会导致运行代码来管理 PS1,即使它只插入空字符串。【参考方案7】:
对我来说,有效的是:
conda config --set changeps1 false
【讨论】:
但是你如何让这个只防止 base 而没有其他环境呢?那是OP的问题。而是回答this question。【参考方案8】:如果您是 macOS 用户并且最近遇到过此类问题。这是解决方案。只需打开终端然后输入..
conda 停用
这个解决方案对我有用。和以前一样,我用 anaconda python 尝试了一些东西。
【讨论】:
【参考方案9】:使用 conda 和 vscode 时。如果你有一个虚拟环境,conda 会在你的项目中激活虚拟环境,如果没有,conda 和 vscode 会为你创建一个名为 base 的虚拟环境。
要停用它,请使用:
conda deactivate
【讨论】:
【参考方案10】:您可以在 .bashrc 中添加一个命令,以从 PS1 中删除“(base)”字符串:
PS1=$(echo $PS1 | sed 's/(base)//')
【讨论】:
您的答案在PS1
的开头添加了一个空格并在$
之后删除了一个空格,因此文本看起来像:_rosgori@sa6:~$cd Documents/
。这一行改进了这一点:PS1="$(echo $PS1 | sed 's/(base) //') "
,不幸的是,当您激活另一个环境,然后停用时,(base)
将在那里。以上是关于如何在更新 conda 后从终端提示符中删除(基础)的主要内容,如果未能解决你的问题,请参考以下文章
用户更新后从 Matlab 编辑 uicontrol 中删除光标?
PATH 未从 VSCode 终端中的 conda activate 正确更新