文章

Ubuntu 下 conda 设置

Ubuntu 下 conda 设置

禁止自动进入 base 环境

Ubuntu 安装 Conda/MiniConda 之后,打开终端默认自动激活 base 环境。

一般我们也不使用 base 环境,考虑到每次都通过 conda deactivate 退出也比较麻烦,可以通过修改 conda 的 config 文件来禁止这一行为:

1
conda config --set auto_activate_base false

增加 Tab 补全

  1. 安装 conda-bash-completion 插件
1
conda install -c conda-forge conda-bash-completion
  1. 禁止自动激活 base 环境下设置 在设置 auto_activate_base: false 的时候,还需要再 ~/.bashrc 中添加下列内容,自动补全才会生效:
1
2
3
4
5
6
CONDA_ROOT=~/miniconda3  # <set to your Anaconda/Miniconda installation directory>
if [[ -r $CONDA_ROOT/etc/profile.d/bash_completion.sh ]]; then
    source $CONDA_ROOT/etc/profile.d/bash_completion.sh
else
    echo "WARNING: counld not find conda-bash-completion setup script"
fi

关闭 Terminal 并重新打开,或者:

1
source ~/.bashrc

新的 conda-completion

迁移

旧版本的对应项目已经归档,而且只支持 Bash。现在 Conda 社区有新的 conda-completion,官方迁移文档也建议先删除旧包,再安装新包;它支持 Bash、Zsh、PowerShell 和 Fish,并能自动注册补全。

先看 Conda 版本:

1
conda --version

如果是 Conda 25.1 或更高,建议直接迁移:

1
2
3
4
conda remove -n base conda-bash-completion
conda install -n base -c conda-forge conda-completion
conda completion install
exec bash

验证:

1
conda completion status

然后测试:

1
2
conda <Tab><Tab>
conda activate <Tab><Tab>

新版方案会自动修改 Bash 配置并注册 _conda_completion,比网上这套旧方案更省事、更稳定。

直接安装新版本

如果没有安装旧版 conda-bash-completion,可以直接安装新版 conda-completion,不需要做迁移或手动修改补全脚本。

在 Ubuntu 的 Bash 中执行:

1
conda install -n base -c conda-forge conda-completion

安装完成后,让它自动生成并写入 Bash 的补全配置:

1
conda completion install bash

然后重新启动当前 Bash:

1
exec bash

或者关闭终端后重新打开。

验证安装状态:

1
conda completion status

再测试补全:

1
2
3
conda ins<Tab>
conda activate <Tab><Tab>
conda install nump<Tab>

新版 conda-completion 支持 Bash、Zsh、Fish 和 PowerShell,可以补全 Conda 命令、参数、环境名称、频道、软件包名称及版本;conda completion install bash 会生成补全清单并安装对应的 Shell hook。

完整流程就是:

1
2
3
4
conda install -n base -c conda-forge conda-completion
conda completion install bash
exec bash
conda completion status

如果安装时不想每次确认,可以加 -y:

1
2
3
conda install -n base -c conda-forge conda-completion -y
conda completion install bash --yes
exec bash

它即使安装在 base 环境中,也不要求终端启动时自动激活 base;补全功能由写入 Bash 启动配置的 hook 加载。官方项目当前仍标注为早期开发阶段,但已发布到 conda-forge。

文章可转载,转载请务必注明出处。