Conda 环境管理基础

环境管理,说白了就是给你的项目搭个干净的小房间。每个房间互相独立,互不干扰。我刚开始用 Conda 时,所有包都装在 base 环境里,结果项目一多,依赖冲突把我折腾得够呛。后来学会了环境管理,感觉整个人都清爽了。

Conda 环境管理核心流程 Conda 环境管理核心流程 创建环境 激活/退出环境 使用环境(安装包) 列出所有环境 删除环境 环境隔离 每个环境独立运行 依赖互不干扰

为什么要管理环境?

你想想看,一个项目需要 TensorFlow 2.x,另一个需要 1.x,要是都装在 base 里,那不乱套了吗?环境隔离就是干这个用的。我自己在做一个分子对接项目时,需要同时维护 AutoDock Vina 和它的 Python 绑定,如果没隔离,每次切换项目都得重新装包,别提多烦了。

环境管理的核心就四个操作:创建、激活/退出、列出、删除。别看简单,用顺手了能省大量时间。

创建环境

创建环境难吗?不难。一行命令搞定。

conda create --name my_docking_env python=3.10

这里 --name 后面跟的是环境名,我习惯取跟项目相关的名字,比如 vina_docking。还可以指定 Python 版本,避免版本冲突。

我个人的小习惯:创建时顺手加上常用包,比如这样:

conda create --name vina_env python=3.10 numpy pandas

这样拉下来的环境含 Python 和科学计算包,后续省事很多。

小提示:环境名不要用空格和特殊符号。最好全小写加下划线,兼容性好。

激活与退出环境

环境创建好后,得「进去」才能用。激活的命令很简单:

conda activate vina_env

激活后,你看终端提示符前面会多出环境名,比如 (vina_env)。这说明你已经在这个环境里了。

退出环境呢,一个命令:

conda deactivate

我刚开始用时,老是忘记激活,结果装包全装到 base 里去了。后来我习惯每次打开终端,先看一眼提示符,确认自己在哪个环境里。

注意:在 Windows 上如果你用的是 PowerShell,可能需要先运行 conda init powershell 才能正常用 conda activate。Linux 和 macOS 一般没问题。

删除环境

用完的环境可以删掉,省空间。命令是:

conda env remove --name vina_env

这里的 vina_env 换成你要删的环境名。注意,删之前一定要确认这个环境不再用了。

我曾经手滑删错过环境,那真是欲哭无泪。后来我养成了一个习惯:删之前先用 conda env list 看看有哪些环境,核对无误再删。

实战经验:如果你不确定环境里装了哪些包,可以用 conda list --name vina_env 先瞅一眼,再决定要不要删。

列出所有环境

想知道你电脑上有多少 Conda 环境?一行搞定:

conda env list

或者用:

conda info --envs

它们效果一样。输出结果里,前面带 * 的那一行,就是当前激活的环境。

我每次打开终端,第一件事就是列一下当前有哪些环境,心里有个数。尤其是项目多的时候,环境一多容易搞混。

操作速查表

操作 命令 说明
创建环境 conda create --name <环境名> python=<版本> 可同时指定 Python 版本或其他包
激活环境 conda activate <环境名> 进入指定环境
退出环境 conda deactivate 返回 base 环境
列出所有环境 conda env list 显示全部环境,当前环境带 * 标记
删除环境 conda env remove --name <环境名> 彻底删除指定环境及其中所有包