术语表#
- 二进制分发#
一种特定类型的 构建分发,其中包含已编译的扩展。
- 构建后端#
一个库,它获取一个源树并从中构建 源分发 或 构建分发。构建由 前端 委托给后端。所有后端都提供一个标准化接口。
构建后端的示例包括 flit 的 flit-core、hatch 的 hatchling、Maturin、meson-python、scikit-build-core 和 Setuptools。
- 构建前端#
- 构建分发#
一个 分发 格式,其中包含文件和元数据,这些文件和元数据只需要移动到目标系统上的正确位置即可安装。 轮子 就是这样的格式,而 源分发 则不是,因为它在安装之前需要一个构建步骤。此格式并不意味着 Python 文件必须预编译(轮子 故意不包含已编译的 Python 文件)。有关更多信息,请参见 包格式。
- 构建元数据#
当包含在已安装的 项目(
METADATA
文件)或 分发存档(Sdist 中的PKG-INFO
和 轮子 中的METADATA
)中时,核心元数据 采用的具体形式。- 核心元数据#
- 核心元数据字段#
在核心元数据规范中定义的单个键值对(或对于多用途字段,具有相同名称的此类序列),并存储在已构建元数据中。值得注意的是,它不同于Pyproject 元数据键。
- 分发存档#
分发包的物理分发工件(即磁盘上的文件)。
- 分发包#
包含 Python 包、模块以及用于分发发行版的其他资源文件的版本化存档文件。存档文件是最终用户将从互联网下载并安装的内容。
分发包通常用单个单词“包”或“分发”来指代,但本指南在需要更多清晰度以避免与导入包(也通常称为“包”)或其他类型的分发(例如 Linux 分发或 Python 语言分发)混淆时,可能会使用扩展术语,这些分发通常用单个术语“分发”来指代。有关差异的细分,请参见分发包与导入包。
- Egg#
由Setuptools引入的已构建分发格式,已由Wheel取代。有关详细信息,请参见Egg 怎么样?。
- 扩展模块#
用 Python 实现的底层语言编写的模块:Python 的 C/C++,Jython 的 Java。通常包含在单个动态可加载的预编译文件中,例如 Unix 上的 Python 扩展的共享对象(.so)文件,Windows 上的 Python 扩展的 DLL(具有 .pyd 扩展名)或 Jython 扩展的 Java 类文件。
- 已知良好集 (KGS)#
指定版本的一组分发,它们彼此兼容。通常会运行测试套件,在将特定的一组包声明为已知良好集之前,该套件会通过所有测试。此术语通常由包含多个单独分发的框架和工具包使用。
- 导入包#
可以包含其他模块或递归包含其他包的 Python 模块。
导入包通常用单个单词“包”来指代,但本指南在需要更多清晰度以避免与分发包(也通常称为“包”)混淆时,将使用扩展术语。有关差异的细分,请参见分发包与导入包。
- 已安装项目#
- 模块#
- 包索引#
具有 Web 界面以自动执行包发现和消费的分发存储库。
- 按项目索引#
- 项目#
库、框架、脚本、插件、应用程序或数据或其他资源的集合,或打算打包到分发中的某些组合。
由于大多数项目使用PEP 518
build-system
、distutils或Setuptools创建分发,因此当前定义项目的另一种实用方法是在项目源目录的根目录中包含pyproject.toml、setup.py或setup.cfg文件。Python 项目必须具有唯一名称,这些名称在PyPI上注册。然后,每个项目将包含一个或多个版本,每个版本可能包含一个或多个分发。
请注意,有一个强有力的约定,即以导入该项目以运行该项目的包的名称来命名一个项目。但是,这不一定成立。可以从项目“foo”安装分发,并让它提供一个只能作为“bar”导入的包。
- 项目根目录#
- 项目源树#
- 项目源元数据#
由包作者在项目的源树中定义的元数据,由项目的构建后端转换为构建元数据中的核心元数据字段。可以写成Pyproject 元数据,或以特定于工具的格式(在
pyproject.toml
中的[tool]
表中,或在工具自己的配置文件中)。- 纯模块#
用 Python 编写的模块,包含在单个
.py
文件中(可能还有相关的.pyc
和/或.pyo
文件)。- Pyproject 元数据#
由 pyproject.toml 规范 规范定义并最初在 PEP 621 中引入的 项目源元数据 格式,存储为 Pyproject 元数据键,位于 pyproject.toml 文件的
[project]
表格下。值得注意的是,不是[tool]
表格下pyproject.toml
中的特定于工具的源元数据格式。- Pyproject 元数据键#
[project]
表格中的顶级 TOML 键,位于pyproject.toml
中;Pyproject 元数据 的一部分。值得注意的是,与 核心元数据字段 不同。- Pyproject 元数据子键#
表值 Pyproject 元数据键 下的二级 TOML 键。
- Python 打包权限 (PyPA)#
PyPA 是一个工作组,维护 Python 打包中的许多相关项目。他们在 pypa.io 上维护一个站点,在 GitHub 和 Bitbucket 上托管项目,并在 distutils-sig 邮件列表 和 Python Discourse 论坛 上讨论问题。
- Python 包索引 (PyPI)#
- pypi.org#
pypi.org 是 Python 包索引 (PyPI) 的域名。它在 2017 年取代了旧的索引域名
pypi.python.org
。它由 Warehouse 提供支持。- pyproject.toml#
- 发行版#
项目 在特定时间点的快照,由版本标识符表示。
制作发行版可能需要发布多个 发行版。例如,如果项目的版本 1.0 已发布,则它可以同时以源发行版格式和 Windows 安装程序发行版格式提供。
- 需求#
要安装的 包 的规范。 pip,PYPA 推荐的安装程序,允许各种形式的规范,所有这些规范都可以被视为“需求”。有关更多信息,请参阅 pip install 参考。
- 需求说明符#
pip 用于从 包索引 安装包的格式。有关该格式的 EBNF 图,请参阅 依赖项说明符。例如,“foo>=1.3”是一个需求说明符,其中“foo”是项目名称,“>=1.3”部分是 版本说明符
- 需求文件#
- setup.py#
- setup.cfg#
适用于 distutils 和 Setuptools 的项目规范文件。另请参阅 pyproject.toml。
- 源存档#
- 源分发(或“sdist”)#
一种 分发 格式(通常使用
python -m build --sdist
生成),提供元数据和安装时必需的源文件,例如 pip,或用于生成 构建分发。有关更多信息,请参阅 包格式。- 系统包#
以操作系统本机格式提供的包,例如 rpm 或 dpkg 文件。
- 版本说明符#
需求说明符 的版本组件。例如,“foo>=1.3”中的“>=1.3”部分。阅读 版本说明符规范 以全面了解 Python 打包当前支持的说明符。对该规范的支持已在 Setuptools v8.0 和 pip v6.0 中实现。
- 虚拟环境#
一种隔离的 Python 环境,允许为特定应用程序安装包以供使用,而不是在系统范围内安装。有关更多信息,请参阅 创建虚拟环境 部分。
- 轮子格式#
- 轮子#
最初在 PEP 427 中引入并由 二进制分发格式 规范定义的标准 构建分发 格式。有关更多信息,请参阅 包格式。不要将其与其参考实现 轮子项目 混淆。
- 轮子项目#
- 工作集#