定义
Conda 是一套开源的软件包管理系统和环境管理系统,运行于 Windows、macOS 和 Linux,用于快速安装、运行和更新软件包及其依赖项[4]。它以命令行的形式提供,也通过 Anaconda Navigator 提供图形界面[5]。
它与常见的发行版不同:Anaconda 和 Miniconda 是由软件包预先配置而成的发行版本,Conda 则是负责安装、更新和删除这些软件包的工具。在默认配置下,Conda 可以安装和管理 Anaconda 仓库中经其构建和维护的 7,500 个以上软件包[1]。
原理
Conda 的核心机制由两部分组成:软件包管理与环境管理。软件包管理负责从称为通道的远程仓库中查找、下载并安装软件包,并自动识别所需的依赖及其兼容版本;环境管理则在本机创建彼此隔离的目录,使不同项目可以各自使用不同版本的软件而不相互干扰。每个环境内保存一份 Conda 自己的元数据,后续的安装与更新操作都以这份元数据为依据[6]。
依赖求解在数学上是一个布尔可满足性问题:把每个候选软件包视为带真假的逻辑变量,把版本约束、构建号、平台与通道优先级转化为硬性约束,再求出满足全部约束的一组解。早期 Conda 使用的是 classic 求解器,其逻辑由 Python 实现并调用底层的 C 语言求解库;自 Conda 23.10 起,基于 mamba 项目与 libsolv 的 libmamba 求解器成为默认后端,它更早进入编译层并采用回溯式搜索,因而耗时更短[6]。
环境本身可以导出为一份文本描述文件,记录所要求的软件包及其版本,其他人据此即可重建出一致的环境,这也是 Conda 服务于科研可复现性的基础[4]。
发展历程
Conda 于 2012 年由 Continuum Analytics 创建,最初定位是跨平台、与语言无关的二进制包管理器[7]。该公司由 Peter Wang 与 Travis Oliphant 共同创立,同年推出开源科学 Python 相关产品[7]。2017 年,Continuum Analytics 更名为 Anaconda 公司[8]。
2015 年,社区驱动的软件包通道 conda-forge 与 bioconda 建立,用以解决科学软件二进制依赖难以安装的问题[9]。2018 年,conda-forge 成为非营利组织 NumFOCUS 的财政赞助项目,该组织的赞助项目数量随之达到 24 个[10]。Conda 自身后来也由多方组成的指导委员会管理,同样接受 NumFOCUS 的财政赞助[3]。
在求解器方面,Mamba 项目以 C++ 重新实现了更快的依赖求解器,其成果被并入核心 Conda,并成为默认求解器[11]。Conda 采用 BSD 许可证发布,全部用 Python 编写[12]。
应用
Conda 最常见的用途是为数据科学与机器学习项目准备运行环境。在同一个机器上,可以保留一个装有 Python 3.10 的旧项目环境,另建一个使用更新版本 Python 的环境,并在两者之间切换。它常被用于安装含编译代码的科学计算库,因为 Conda 分发的是预编译的二进制包,使用者无需自行准备编译器工具链[2]。
在生物信息学等领域,Bioconda 通道提供了超过 8,000 个软件包,覆盖基因组学、蛋白质组学、结构生物学等方向[11]。conda-forge 则托管了 26,000 个以上项目,是生态系统中规模最大的社区通道之一[3]。在高校与科研机构的高性能计算平台中,Conda 也常以模块形式提供给用户,用于在集群上创建和迁移自定义环境[4]。
局限
Conda 只能管理由它自己安装的软件包,对其他工具放入环境中的内容控制能力有限[6]。pip 不会写入 Conda 的元数据,因此在同一环境里先使用 pip 再用 Conda 安装,Conda 可能覆盖或破坏 pip 装上的包;反过来,pip 也可能升级或移除 Conda 所依赖的包。官方文档推荐的顺序是尽量先用 Conda 安装,最后才用 pip 补齐 Conda 不提供的包[6]。
环境导出文件的跨平台可移植性也受到限制:完整导出会包含与平台相关的构建哈希,在 Linux 上生成的文件未必能在 macOS 上重建成功[13]。求解失败是另一类常见问题,当约束彼此矛盾或混合使用多个通道时,求解器会直接报错并终止,而不会给出可以安装的折中方案。此外,libmamba 求解器在处理 track_features 元数据时只看第一层,涉及多层变体优先级的环境可能得到与 classic 不同的结果。
许可方面,Conda 工具本身可以免费使用,但 Anaconda 的默认通道受其服务条款约束,在部分情形下需要取得许可。
参见
-
conda-forge —— 社区驱动并接受 NumFOCUS 财政赞助的软件包通道,是 Conda 生态中规模最大的公共仓库之一。
-
Anaconda —— 包含 Conda 与大量科学计算软件包的发行版本,也是 Conda 最初的开发方。
-
Miniconda —— Anaconda 的最小化版本,只包含 Conda、Python 及其依赖,便于按需自行安装软件包。
-
NumFOCUS —— 为 conda-forge 与 Conda 项目提供财政赞助的非营利组织。
-
Mamba —— 用 C++ 重写的 Conda 兼容包管理器,其快速求解器已成为 Conda 的默认后端。
-
pip —— Python 官方推荐的包管理器,与 Conda 在安装 Python 包这一部分功能上有所重叠。
参考资料
- Conda [引用日期2026-10-14]
- Conda: A Package Manager for Data Science, ML, and AI [引用日期2026-10-14]
- Conda Ecosystem Explained | conda.org [引用日期2026-10-14]
- Conda¶ [引用日期2026-10-14]
- Definition: Anaconda [引用日期2026-10-14]
- Conda, Pip, and Mamba in One Environment — CASRAI [引用日期2026-10-14]
- Anaconda 历史 [引用日期2026-10-14]
- About Anaconda | Anaconda [引用日期2026-10-14]
- czi-eoss-5-loi-infra(PDF) [引用日期2026-10-14]
- Conda-forge joins NumFOCUS Sponsored Projects [引用日期2026-10-14]
- Conda Ecosystem Explained [引用日期2026-10-14]
- zenodo.org 上的网页 [引用日期2026-10-14]
- fixdevs.com 上的网页 [引用日期2026-10-14]