1. 先把 Conda 和周边概念摆正,后面少踩八成的坑
很多人一上来就让 conda 安装包,被各种 “Conda” 报错折磨。Conda 并不是某一个 Python 安装器,它本身是一个通用包管理器 + 环境管理器,默认带着 Python 发行版。它能创建多个互相隔离的环境,每个环境可以拥有不同的 Python 版本、不同的包版本,这种隔离机制解决的是项目依赖冲突问题。
比如我在本机要同时维护两个项目:一个项目跑 PyTorch,锁定了 Python 3.10 和某几个 CUDA 相关包;另一个项目要跑最新版 TensorFlow,需要 Python 3.11。如果都在全局环境里装,大概率会冲突;但用 conda 创建两个独立环境,互不干扰,随时切换。这个使用体验用一句话概括就是:先圈地,再装修,装坏了推倒重来不心疼。
Conda 和 pip 的区别,我经常用外卖和家装来类比。pip 像一个外卖平台,能把一个个“做好的包”送到你的 Python 环境里,但对房子本身的结构管得不多。conda 更像一个装修队,不只帮你买家具,连墙体、水电线路一起规划,Python 解释器、CUDA 运行库、系统级的二进制依赖都可以一起处理。所以你会发现 conda 能安装 pip 装不了的非 Python 库,比如 GDAL、HDF5、OpenCV 的底层组件。
还有一组容易混淆的概念需要分开记:Anaconda、Miniconda、Miniforge、conda-forge、mamba。Anaconda 是一个大礼包发行版,预装几百个科学计算包;Miniconda 是轻量版,只有 conda、Python 和小部分必要组件;Miniforge 是社区主导的轻量发行版,默认使用 conda-forge 频道;conda-forge 是一个社区维护的 channel;mamba 是一个更快的新型 conda 替代器,后面会专门讲。
1.1 环境文件、频道和虚拟环境,分别管什么事
理解 conda 前,最需要记住三个核心概念:
- channel(频道):包的下载源,类似手机应用商店。conda 默认从
defaults下载,也可以切换到conda-forge、国内镜像。 - environment(环境):一个独立的“软件房间”,里面有一份自己的 Python 和包集合。环境之间互不可见。
- environment.yml(环境文件):把当前环境配置导出成 YAML 文件,方便在其他机器上重建。
刚开始用 conda 的人最容易犯的错,是把包全装到 base 环境。base 是 conda 自己住的地方,一旦依赖被改乱,conda 本身都可能坏掉。我现在的习惯是:base 环境只做基础维护,比如安装 mamba、更新 conda,项目一律单独建环境。这个习惯帮我省掉的麻烦,比任何一条 conda 命令都值钱。
1.2 为什么 conda 更适合做“完整环境”方案
Python 的虚拟环境工具不止 conda,venv、virtualenv 也干类似的事。区别在于:venv 只隔离 Python 包,不隔离 Python 解释器版本,更不负责系统二进制依赖;conda 则可以把 Python 3.8、3.10、3.11 都放到不同环境里,切换环境相当于切换解释器版本。
如果你只写少量纯 Python 代码,用 venv 已经够了。但如果涉及科学计算、深度学习、地理数据处理,或者需要复现一个指定 CUDA 版本的 PyTorch 环境,我会优先选择 conda。这份手册的后续内容,也都以 conda 为基准来讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装选型:Miniconda、Anaconda、Miniforge 怎么挑
安装 Conda,不是直接去官网下载一个 Anaconda 就完事了。我见过太多人在第一步就给自己埋了雷:装完 Anaconda 之后,base 环境里塞了几百个包,启动慢,还涉及版权问题。下面把三个主流发行版放在一起说清楚。
2.1 三款发行版的对比与适用场景
| 发行版 | 包管理器 | 默认频道 | 体积 | 适用场景 |
|---|---|---|---|---|
| Anaconda | conda | defaults | 很大(安装包约 1GB+) | 新手尝鲜、完整科学计算全家桶 |
| Miniconda | conda | defaults | 较小(约几十 MB) | 想自己掌控包、项目环境隔离 |
| Miniforge | conda/mamba | conda-forge | 较小(约几十 MB) | 关注开源版权、偏好社区频道 |
如果你是为了快速体验,装 Anaconda 确实省心,因为它预装了很多常见包。但我的建议是:从 Miniconda 或 Miniforge 开始。原因很简单,很多包你根本用不上,没必要让一个庞大的 base 环境拖慢 conda 的求解速度;而且用不到预装包的时候,Anaconda 的授权条款反而可能造成麻烦。
2.2 Anaconda 的商业使用条件,和 Miniforge 为什么能避开
Anaconda 的默认频道 defaults 里不少包来自 Anaconda 公司的商业发行版。从 2020 年开始,Anaconda 的 Terms of Service 规定:符合特定规模的组织(我记得关键是超过 200 人的企业且年收入超过一定阈值),如果使用 Anaconda 的默认频道和发行版,需要购买商业许可证。
这个版权问题在日常个人开发中影响不大,但我看到越来越多企业在内部规范里明确禁止直接安装 Anaconda。更稳妥的替代方案是 Miniforge,它的默认频道是 conda-forge,这是一个完全由社区维护、遵循开源协议分发的频道,基本不会踩到 Anaconda 的商业授权红线。所以如果你所在团队有合规要求,可以直接使用 Miniforge 来避免后期麻烦。
2.3 Windows、Linux、macOS 的安装要点
Windows 环境
从官网下载 Miniconda 安装包,双击执行。安装过程中有一个关键选项:“Add Miniconda3 to PATH” 默认不勾选。这是不少人遇到 'conda' 不是内部或外部命令 的原因。要不要勾选,我分两种情况说:
- 只准备用 Anaconda Prompt 或者已经装了 VS Code,可以不勾选,然后通过初始化命令配置。
- 想在 PowerShell、CMD 里直接输入
conda,建议勾选,或者安装后手动执行conda init powershell。
Linux 环境(含 Ubuntu)
Ubuntu 安装 conda 的方式高度统一:下载脚本,然后 bash 执行
