Conda 环境管理基础
环境管理,说白了就是给你的项目搭个干净的小房间。每个房间互相独立,互不干扰。我刚开始用 Conda 时,所有包都装在 base 环境里,结果项目一多,依赖冲突把我折腾得够呛。后来学会了环境管理,感觉整个人都清爽了。
为什么要管理环境?
你想想看,一个项目需要 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 里去了。后来我习惯每次打开终端,先看一眼提示符,确认自己在哪个环境里。
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 <环境名> |
彻底删除指定环境及其中所有包 |