4. 环境管理基础:创建、激活、停用、删除与列出环境

环境隔离是 Conda 的核心价值。说白了,它就是给你的每个项目搭一个独立的“软件小房间”。房间里 Python 版本是 3.8,还是 3.10,完全由你说了算。不同房间里的包可以互不干扰,这就避免了“A 项目要 numpy 1.19,B 项目要 numpy 1.24”这种让人头疼的冲突。

我记得刚用 Conda 那会儿,觉得多此一举。后来在一个项目里装 OpenCV,直接把整个 base 环境搞崩了,重装了三次系统…嗯,从那以后我再也不敢在 base 里乱装东西了。今天咱们就把环境管理的四个核心操作一次性吃透。

4.1 创建环境:给你的项目安个家

创建环境是第一步,也是最常用的一步。我个人的习惯是,每一个新项目,哪怕再小,也单独建一个环境。这样后期维护成本最低。

conda create --name my_project python=3.9

这条命令会创建一个名为 my_project 的新环境,并安装 Python 3.9。如果你还想顺便装几个包,可以这样写:

conda create --name visium_env python=3.9 numpy pandas matplotlib

为什么推荐指定 Python 版本?因为 Conda 默认会使用 base 环境的 Python 版本,而 base 环境通常比较老或者被你搞乱了。你想想看,万一 base 里是 Python 3.6,新项目需要 3.9,那就只能手动指定。

小技巧: 创建环境时加上 -c conda-forge 可以指定从 conda-forge 频道下载包,这个频道包更全、更新更快。比如 conda create -n my_env python=3.9 -c conda-forge。
注意: 环境名不要包含空格或特殊字符。我曾经见过有人用 my project(中间有空格),结果激活时各种报错。老老实实用下划线或短横线。

4.2 激活与停用环境:切换你的工作空间

环境创建好了,怎么用?答案是激活它。激活后,你当前终端会话里的 Python 和所有包,都来自这个新环境。

# 激活环境(Windows)
conda activate my_project

# 激活环境(Linux / macOS)
conda activate my_project

激活后,你会发现命令行前面多了 (my_project) 这样的提示。这就是环境名称,说明你现在身处哪个“小房间”里。

停用环境更简单:

conda deactivate

运行后,你会回到 base 环境。注意,conda deactivate 不需要指定环境名,它默认停用当前激活的环境。

我在项目中遇到过一个问题:激活环境后,终端里 Python 版本还是老的。后来发现是因为 PATH 里有个老版本的 Python 安装路径优先级更高。解决办法是运行 which python(Linux/macOS)或 where python(Windows),看看它指向哪里。如果能指向 Conda 环境的路径,那就对了。

4.3 删除环境:清理不再需要的空间

环境用完了,或者搞坏了,就删掉。不要犹豫,留着也是占磁盘空间。

conda remove --name my_project --all

这里 --all 表示删除该环境下的所有内容。如果不加这个参数,Conda 会提示你确认,但只删部分文件,不彻底。

核心理解: 删除环境不会影响其他环境,也不会影响 base 环境。它只是把 envs/ 目录下对应的文件夹删掉。

我曾经在项目结束后忘了删测试环境,几个月后硬盘报警,才发现一堆废弃的环境占了十多个 G。所以,养成好习惯:项目交付后,第一时间清理掉临时环境。

警告: 不要试图删除 base 环境。它是 Conda 自己的环境,删了后 Conda 本身就会出问题。如果你搞坏了 base 环境,最快的修复方法是重装 Miniconda/Anaconda,而不是尝试修。

4.4 列出环境:查看你有哪些“房间”

环境多了,容易记不住。这时候就需要列出所有环境。

conda env list

或者用简写:

conda info --envs

输出结果类似这样:

# conda environments:
#
base                  *  /home/user/miniconda3
my_project               /home/user/miniconda3/envs/my_project
visium_env               /home/user/miniconda3/envs/visium_env

带 * 的那个就是当前激活的环境。如果你当前没激活任何环境,那 * 会出现在 base 上,或者不出现(这取决于你的配置)。

还有一个命令可以查看环境的详细信息:

conda info

它会显示当前环境下的 Conda 版本、Python 版本、平台信息等。不过日常用得不多,我一般只用 conda env list 看看有哪些环境就够了。

4.5 知识脉络:一张图看懂环境管理

下面这张图浓缩了环境管理的整体流程,从环境不存在到创建、激活、运行、停用、再删除。你跟着箭头走一遍,就能理解整个生命周期。

Conda 环境管理核心流程 环境未存在 conda create -n my_env 创建环境 conda activate 激活环境 运行 Python / 安装包 / 执行代码 conda deactivate 停用环境 conda remove --name my_env --all 删除环境 不可恢复 环境彻底消失 列出环境(随时可查) conda env list

4.6 核心命令速查表

我把上面讲到的所有命令整理成一个表格,方便你以后快速查阅。建议收藏。

操作 命令 说明
创建环境 conda create -n env_name python=x.x 可同时安装多个包
从文件创建 conda create -n env_name -f environment.yml 适合团队协作
激活环境 conda activate env_name Windows/Linux/macOS 通用
停用环境 conda deactivate 回到 base 环境
删除环境 conda remove -n env_name --all 彻底删除,不可恢复
列出环境 conda env list 显示所有环境及当前激活状态
查看环境信息 conda info 包含 Conda 版本、Python 版本等

最后说一句,conda create 和 conda install 的区别要分清楚:create 是建新环境,install 是往当前环境里装包。别搞混了,我曾经在 conda create 后面误写了 numpy 为 install numpy,结果报了半天错才反应过来。