Conda

关注
义项:开源包与环境管理器
Conda

Conda是开源的软件包管理系统与环境管理系统,可跨平台安装、升级和卸载软件包及其依赖,并在本机创建相互隔离的运行环境[1]。它最初为 Python 程序而设计,但可以打包和分发任何语言编写的软件,包括 R、C/C++、Ruby 等。Conda 由 Anaconda 公司于 2012 年创建,现由多方组成的指导委员会在 NumFOCUS 的财政赞助下作为社区项目维护[2][3]。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

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 包这一部分功能上有所重叠。

参考资料

  1. Conda [引用日期2026-10-14]
  2. Conda: A Package Manager for Data Science, ML, and AI [引用日期2026-10-14]
  3. Conda Ecosystem Explained | conda.org [引用日期2026-10-14]
  4. Conda¶ [引用日期2026-10-14]
  5. Definition: Anaconda [引用日期2026-10-14]
  6. Conda, Pip, and Mamba in One Environment — CASRAI [引用日期2026-10-14]
  7. Anaconda 历史 [引用日期2026-10-14]
  8. About Anaconda | Anaconda [引用日期2026-10-14]
  9. czi-eoss-5-loi-infra(PDF) [引用日期2026-10-14]
  10. Conda-forge joins NumFOCUS Sponsored Projects [引用日期2026-10-14]
  11. Conda Ecosystem Explained [引用日期2026-10-14]
  12. zenodo.org 上的网页 [引用日期2026-10-14]
  13. fixdevs.com 上的网页 [引用日期2026-10-14]
词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T22:16:27Z

历史版本

本条目引用的词条
Anaconda conda-forge NumFOCUS Miniconda Mamba pip