3. Conda 基本命令:创建、激活、删除环境

进入正题之前,我想先问你一个问题:你平时是怎么管理 Python 版本的?

很多新手直接 pip install 装到 base 环境里,装到后面一团乱。项目 A 要 Python 3.8 + TensorFlow 1.x,项目 B 要 Python 3.11 + PyTorch 2.0。你让 base 怎么兼容?

Conda 的虚拟环境就是解决这个问题的。每个环境是独立的箱子,你随便折腾,坏了就删掉重来。今天我把最常用的三个命令——创建、激活、删除——掰开揉碎讲清楚。

3.1 创建环境:conda create

创建环境是 Conda 最基础的操作。命令很简单:

conda create --name myenv python=3.9

这条命令会创建一个名为 myenv 的环境,安装 Python 3.9 以及所有基础依赖。注意,如果你不加 python 版本号,Conda 只会创建一个空环境,什么包都没有——进去之后连 python 都找不到,别问我怎么知道的,我曾经就踩过这个坑。

命名建议:我习惯用 project_python版本 的格式,比如 ml_pipeline_py39。这样一看名字就知道这个环境是干嘛的,避免半年后面对一堆 test1、test2 抓耳挠腮。

如果你还需要安装其他包,可以一次性追加:

conda create --name myenv python=3.9 numpy pandas scikit-learn

Conda 会自动解析依赖冲突。嗯,这里有个小细节:推荐使用 conda-forge 频道,因为官方频道很多包更新慢。加 -c conda-forge 即可:

conda create -c conda-forge --name myenv python=3.10 opencv
注意:-c conda-forge 要放在环境名前面,顺序别搞反了。我遇到过有人写成 conda create --name myenv -c conda-forge python,虽然也能用,但逻辑上包源优先设置更清晰。

3.2 激活环境:conda activate

环境创建好之后,你得激活它才能用里面的包。命令:

conda activate myenv

激活后,终端行前面会出现 (myenv) 标识。这时候你运行 python --version,看到的就是你指定的版本。

不同操作系统的注意事项:

系统 首次使用需要 常见问题
Linux / macOS conda init(通常安装时已配好) 如果 conda activate 报错,先跑 source ~/.bashrc 或重启终端
Windows 默认安装在 Anaconda Prompt 里使用 在 PowerShell 中用 conda activate 可能需要先 conda init powershell

我个人习惯在激活环境后,立马执行 python -c "import sys; print(sys.executable)" 确认一下解释器路径,确保真的是在用新环境。这个习惯帮我发现过好几次路径污染问题。

退出环境:用 conda deactivate 即可。不用记名字,Conda 会自动回退到 base 环境。

3.3 删除环境:conda remove --name [环境名] --all

环境不要了就删掉,干净利落。命令:

conda remove --name myenv --all

注意 --all 这个参数,不加的话只会删除指定的包,不会删环境本身。我曾经犯过糊涂,只写了:

conda remove --name myenv python

结果环境还在,只是 Python 没了,成了一个「残疾环境」。后来进都进不去了,还得手动去 envs/ 目录下 rm -rf。所以一定要带上 --all。

删除前确认:Conda 会提示你确认。如果你在 CI/CD 脚本里想跳过确认,加 -y 参数:conda remove --name myenv --all -y。但手工操作时我不建议用 -y,万一打错了环境名……嗯,反正我删错过一次。

如果你想删除当前已激活的环境,需要先 deactivate 再删,否则会报错。因为 Conda 不允许删除正在使用的环境。

3.4 列出所有环境:conda env list

作为补充,列出环境的命令:

conda env list

或者用简写:conda info --envs。输出类似:

# conda environments:
#
base                  *  /home/user/miniconda3
myenv                    /home/user/miniconda3/envs/myenv
ml_pipeline_py39        /home/user/miniconda3/envs/ml_pipeline_py39

带 * 的就是当前激活的环境。平时排查问题时,我第一件事就是跑这个命令,确认我到底在哪个环境里——相信我,你会经常搞混的。

3.5 完整的工作流示例

把上面的命令串起来,看看一个典型的使用流程:

  1. 创建环境并安装依赖
  2. 激活环境
  3. 跑代码或做实验
  4. 退出环境
  5. (可选)删除环境
# 1. 创建
conda create -c conda-forge --name my_project python=3.9 pandas numpy -y

# 2. 激活
conda activate my_project

# 3. 验证
python -c "import pandas; print(pandas.__version__)"

# 4. 运行你的代码
python train.py

# 5. 用完退出
conda deactivate

# 6. 再也不用了?删掉
conda remove --name my_project --all -y
核心原则:每个项目一个环境,每次创建都用相同的 Python 版本基线,依赖从 environment.yml 锁定(后面章节会细讲)。这样你半年后回来看项目,依然能复现。

最后,我把本章的知识脉络整理成一张图,帮你快速建立整体认知:

Conda 环境生命周期 conda create conda activate 使用 / 跑代码 conda deactivate conda remove --all 📌 关键要点 • 创建时指定 Python 版本和频道(-c conda-forge) • 激活后记得用 python -c 验证解释器路径 • 删除一定要带 --all,且先 deactivate 再删