Conda 生态系统详解
了解 conda 生态系统——一个充满活力的社区,支持开源、语言无关和多平台的软件包管理系统。探索用于管理软件包和环境的 conda CLI 工具,并了解关键的存储库,如 conda-forge、bioconda 和 defaults。您将学习如何开始使用 conda 工具,需要牢记的重要事项,以及多方利益相关者的治理如何确保生态系统保持可靠且对所有人开放。
什么是 conda 生态系统?
其核心是,conda 生态系统是一个社区,支持开源、语言无关和多平台的软件包管理系统。
但是,“软件包管理生态系统”到底意味着什么?在不深入探讨每个细节的情况下,以下是 conda 社区维护的三个主要组成部分
- 用于软件包管理的 CLI 工具:conda 命令行工具可以轻松地在 Linux、Windows 和 macOS 等隔离的开发环境中安装和管理依赖项。Conda 可以处理用任何语言编写的软件包,例如 Python、R、C 或 Fortran。
- 软件包仓库:大多数公开可用的 conda 软件包都托管在 anaconda.org 上,并组织成通道。通道就像远程仓库,软件包存储在其中并可以从中拉取。您可以找到由社区、公司或个人维护的通道。
- 构建工具:如果您想创建和共享自己的 conda 软件包,生态系统会提供工具来帮助您高效地构建和分发它们。
这个系统得到了各种其他支持项目的支持,您可以在 conda 的 GitHub 组织 或 conda-incubator 中探索新兴项目。
Conda 软件包和环境管理器
整个生态系统的基石是 conda 软件包和环境管理器。Conda 最初由 Anaconda, Inc. 开发并以 Python 实现,但它并不局限于 Python——它是一个功能齐全的软件包管理器,可以处理跨多种语言和平台的依赖项。无论您是使用 Python 或 R 的数据科学家,还是处理 C 或 Fortran 库的机器学习工程师,conda 都能满足您的需求。
Conda 从一开始就是开源的,并且由于广泛社区的支持而显着发展。如今,它在 NumFOCUS 非营利组织的财政赞助下,由 多方利益相关者指导委员会管理,确保它仍然是一个平衡的、社区驱动的项目。
是的,conda 是免费的。一直都是,将来也会是。这种对开源的承诺促使了 conda 生态系统中几种兼容替代品的开发,以及对核心 conda 软件包管理器的增强。一个值得注意的例子是 Mamba,它是用 C++ 重新实现的更快版本。Mamba 的快速求解器已贡献给核心 conda 软件包管理器,现在是 conda 附带的默认求解器。另一个新兴工具是 Pixi,这是一款基于 Rust 的软件包管理器,它可以与 conda 软件包无缝协作,同时对传统的 conda 工作流程提供独特的见解。
此外,所有这些工具都使用相同的 conda 标准和格式,这些标准和格式通过 Conda 增强提案 (CEP) 流程进行协作改进。
Conda 软件包仓库和通道
当涉及到使用 conda 或与 conda 兼容的工具管理软件包时,了解这些软件包的来源至关重要。Anaconda.org 是 conda 软件包的中心枢纽,组织成各种 通道。虽然任何人都可以在 anaconda.org 上创建自己的通道来托管 conda 软件包,甚至运行自己的软件包索引,但我们将重点关注 conda 生态系统中最大和最重要的通道。
conda-forge
conda-forge 是 conda 生态系统中最大和最具影响力的通道之一。这个通道完全由社区驱动,托管了超过 26,000 个项目和 2,000,000 个工件,使其成为全球开发人员的首选资源。conda-forge 是开源的,免费使用,并由一群敬业的志愿者维护。治理模型 确保该通道保持可靠且对所有人开放。
bioconda
如果您的工作涉及计算生物学,Bioconda 是您想要探索的通道。与涵盖各种软件包的 conda-forge 不同,Bioconda 专注于生物信息学。它提供超过 8,000 个软件包,这些软件包适用于基因组学、蛋白质组学、结构生物学和生物质分析等子领域。与 conda-forge 一样,bioconda 是开源的,免费使用,并由一个志愿者社区维护。
defaults
defaults
通道(有时称为 main
)由 Anaconda, Inc 维护。重要的是要注意,此通道附带 服务条款。虽然对于个人用户、学生和小公司来说大部分是免费的,但在某些情况下可能需要许可证。有关更多信息,请随时查看 关于 Anaconda 服务条款的常见问题解答。
其他 conda 软件包服务器
虽然 anaconda.org 是社区大部分用户的中心软件包仓库,但它绝不是托管 conda 软件包的唯一选择
- 目前正在讨论关于使用开放容器镜像 (OCI) 存储 conda 软件包和 repodata 的 Conda 增强提案,并且存在 镜像通道的工具。一个概念验证镜像项目位于 github.com/channel-mirrors,目前该项目将 conda-forge 软件包镜像到 GitHub 的 OCI 注册表。
- conda-subchannel 是另一个社区原型,旨在改进通过自托管或公共云托管(例如 GitHub Pages)提供 conda 通道的方式。
- 生态系统利益相关者 Prefix.dev 在其 Web 平台上运行各种镜像,包括 conda-forge 的通道。
- 大学和研究机构,以及许多 conda 的企业用户,出于各种原因,一直在自己的基础设施中托管自己的软件包或现有通道的镜像。
Conda 和与 conda 兼容的工具入门
(在撰写本文时)有几种不同的方法可以安装并开始使用 conda
安装程序名称 | 包含的软件包管理器 | 自动设置通道为 |
---|---|---|
Miniconda | conda | defaults |
Miniforge | conda & mamba | conda-forge |
Micromamba | mamba | 无 |
Pixi | pixi | conda-forge |
这些安装程序中的每一个都提供了进入 conda 生态系统的不同路径,使您可以根据自己的偏好定制您的设置。
如果您选择 Miniconda,它默认使用 defaults
通道,您可以在安装后轻松重新配置 conda,通过编辑 .condarc
文件,仅使用免费的社区通道,如 conda-forge
或 bioconda
。
Anaconda 在支持 conda 生态系统中的作用
Anaconda, Inc.(与其他组织一起)在保持 conda 生态系统的强大和可持续性方面发挥着至关重要的作用。Anaconda Inc. 通过定期向 NumFOCUS 捐款、提供工程资源以及慷慨地支付 anaconda.org 的托管费用来做出贡献。这种支持对于保持 conda-forge 和 Bioconda 等社区通道的免费和可访问性至关重要。
但是,重要的是要澄清,conda 生态系统由一个独立的、多元化的社区管理,该社区致力于为所有用户提供免费和开源的工具以及不受限制的软件包仓库。参见