3. Conda 基础命令:环境管理的四把刀
说实话,很多人学 Conda 最怕的不是命令多,而是不知道每条命令到底在干什么。我今天就把最常用的四条命令——create、activate、deactivate、list——揉碎了讲给你听。这四条命令要是用熟了,后面 27 章你都会很顺手。
一句话总结:conda create 建房子,conda activate 住进去,conda deactivate 搬出来,conda list 查家具清单。
3.1 conda create —— 给你的项目搭个独立小房间
我个人习惯,拿到一个新项目的第一件事就是创建环境。为啥?因为我不想让 A 项目依赖的 Python 3.8 跟 B 项目要求的 3.10 打架。
基本命令长这样:
conda create --name my_project_env python=3.9
这里 --name 可以简写成 -n。我建议你给环境起名字的时候带上项目名和 Python 版本号,比如 ml_project_py39。时间久了你会感谢这个习惯——相信我,半年后看着一堆 test1、test2 你真的想不起来是干嘛的。
你还可以一次装好几个包:
conda create -n data_analysis python=3.9 numpy pandas matplotlib
嗯,这里要注意:conda create 并不会自动激活环境。它只是把房子建好,门锁着。你得自己拿钥匙开门。
我曾经刚学 Conda 时,执行完 create 就以为已经在环境里了,直接 pip install xxx,结果装到了 base 环境。排查了半天才知道——创建环境不等于进入环境。务必记住这一步。
3.2 conda activate —— 打开门,走进去
创建完环境,怎么进去?用 conda activate。
conda activate my_project_env
执行完你就会发现终端提示符前面多了个 (my_project_env)。我每次看到这个括号,心里就踏实了——接下来的所有操作都被关在这个独立空间里了。
不过,Windows 用户要注意一件事。如果你用的是 PowerShell,可能会遇到这条报错:
conda activate my_project_env
# 报错:CommandNotFoundException
为什么呢?因为 PowerShell 默认不让执行 Conda 的激活脚本。解决方案很简单,第一次使用时运行这个:
conda init powershell
然后重启终端就好了。我在项目中遇到过好几个同事卡在这里,折腾了半小时才发现只是没 init。
小技巧:conda activate 后面如果不加环境名,会直接退回到 base 环境。这点跟 conda deactivate 效果类似,但行为上有细微差别——activate 回 base 时不会卸载环境变量。
3.3 conda deactivate —— 干完活,关好门
说白了,deactivate 就是把当前环境“关掉”,让你回到 base 环境。命令很简单:
conda deactivate
执行后,那个括号就消失了。你可能觉得这步无所谓,但我建议你在切换项目时一定要先 deactivate,再 activate 另一个环境。你想想看,如果不退出 A 环境就直接 conda activate B,Conda 其实会先自动 deactivate A,再进入 B。但有些极端情况,比如 A 环境里改了 PATH 变量,直接跳转可能残留一些路径信息。
我自己的习惯是:
- 干完活,先
conda deactivate - 确认括号消失
- 再
conda activate next_project
虽然多打一条命令,但心里有数。
3.4 conda list —— 看看家里都放了啥
conda list 是我用得最频繁的命令之一。它列出当前环境下所有已安装的包、版本号、以及来源渠道。
conda list
输出大概长这样:
# packages in environment at /home/user/miniconda3/envs/my_project_env:
#
# Name Version Build Channel
numpy 1.24.3 py39h2665c0f_0 conda-forge
pandas 2.0.1 py39h5326b9c_0 conda-forge
python 3.9.17 h7a1cb2a_3 conda-forge
你看这个输出,每一列信息都有用:
- Name:包名,知道装了啥
- Version:版本号,锁定工具版本的关键
- Build:构建标识,不同操作系统可能不同
- Channel:来源,是默认的 defaults 还是 conda-forge
有一次我在项目中遇到一个问题:A 同事的环境跑得好好的,我拉下来就报错。一查 conda list,发现我装的 numpy 是 1.25.0,他的是 1.24.3。版本不兼容导致的。
如果你想只看某个特定的包:
conda list numpy
如果你怀疑某个包没装,或者想确认版本对不对,这条命令能救命。
3.5 四条命令的配合套路
我给你整理了一个标准操作流程,平时我都是这么用的:
| 步骤 | 命令 | 目的 |
|---|---|---|
| 1 | conda create -n proj python=3.9 | 创建项目专用环境 |
| 2 | conda activate proj | 进入环境 |
| 3 | conda install numpy pandas | 安装依赖包 |
| 4 | conda list | 确认版本,记下来 |
| 5 | conda deactivate | 退出环境 |
你想想看,有了这套流程,每个项目都在独立的房间里运行,Python 版本随时切,包冲突几乎降为零。这才是 Conda 的核心价值所在。
核心经验:conda list 输出的版本信息,就是你将来锁定工具版本的第一手资料。每次装完新包,我都建议看一眼 conda list,心里有个数。