3. Conda 基础命令:环境管理的四把刀

说实话,很多人学 Conda 最怕的不是命令多,而是不知道每条命令到底在干什么。我今天就把最常用的四条命令——create、activate、deactivate、list——揉碎了讲给你听。这四条命令要是用熟了,后面 27 章你都会很顺手。

一句话总结:conda create 建房子,conda activate 住进去,conda deactivate 搬出来,conda list 查家具清单。

Conda 基础命令工作流 conda create 创建隔离环境 conda activate 进入环境 安装 / 使用工具 pip install / 运行代码 conda list 查看已安装包 conda deactivate 退出环境 核心思想:先创建 → 再激活 → 操作 → 最后退出 每个项目一个独立环境,互不污染

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 变量,直接跳转可能残留一些路径信息。

我自己的习惯是:

  1. 干完活,先 conda deactivate
  2. 确认括号消失
  3. 再 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,心里有个数。