Ubuntu 下 conda 设置
禁止自动进入 base 环境
Ubuntu 安装 Conda/MiniConda 之后,打开终端默认自动激活 base 环境。
一般我们也不使用 base 环境,考虑到每次都通过 conda deactivate 退出也比较麻烦,可以通过修改 conda 的 config 文件来禁止这一行为:
1
conda config --set auto_activate_base false
增加 Tab 补全
- 安装
conda-bash-completion插件
1
conda install -c conda-forge conda-bash-completion
- 禁止自动激活 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。
