术语表#

二进制分发#

一种特定类型的 构建分发,其中包含已编译的扩展。

构建后端#

一个库,它获取一个源树并从中构建 源分发构建分发。构建由 前端 委托给后端。所有后端都提供一个标准化接口。

构建后端的示例包括 flit 的 flit-corehatch 的 hatchlingMaturinmeson-pythonscikit-build-coreSetuptools

构建前端#

用户可能运行的工具,它获取任意源树或 源分发,并从中构建源分发或 轮子。实际构建委托给每个源树的 构建后端

构建前端的示例包括 pipbuild

构建分发#

一个 分发 格式,其中包含文件和元数据,这些文件和元数据只需要移动到目标系统上的正确位置即可安装。 轮子 就是这样的格式,而 源分发 则不是,因为它在安装之前需要一个构建步骤。此格式并不意味着 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 模块。

导入包通常用单个单词“包”来指代,但本指南在需要更多清晰度以避免与分发包(也通常称为“包”)混淆时,将使用扩展术语。有关差异的细分,请参见分发包与导入包

已安装项目#

已安装以与 Python 解释器或虚拟环境一起使用的项目,如规范记录已安装项目中所述。

模块#

Python 中代码可重用性的基本单元,存在两种类型之一:纯模块扩展模块

包索引#

具有 Web 界面以自动执行发现和消费的分发存储库。

按项目索引#

由特定项目指示的私有或其他非规范包索引,作为该项目解析依赖项的首选或必需索引。

项目#

库、框架、脚本、插件、应用程序或数据或其他资源的集合,或打算打包到分发中的某些组合。

由于大多数项目使用PEP 518 build-systemdistutilsSetuptools创建分发,因此当前定义项目的另一种实用方法是在项目源目录的根目录中包含pyproject.tomlsetup.pysetup.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 上维护一个站点,在 GitHubBitbucket 上托管项目,并在 distutils-sig 邮件列表Python Discourse 论坛 上讨论问题。

Python 包索引 (PyPI)#

PyPI 是 Python 社区的默认 包索引。所有 Python 开发者都可以使用和分发他们的发行版。

pypi.org#

pypi.orgPython 包索引 (PyPI) 的域名。它在 2017 年取代了旧的索引域名 pypi.python.org。它由 Warehouse 提供支持。

pyproject.toml#

与工具无关的 项目 规范文件。在 PEP 518 中定义。

发行版#

项目 在特定时间点的快照,由版本标识符表示。

制作发行版可能需要发布多个 发行版。例如,如果项目的版本 1.0 已发布,则它可以同时以源发行版格式和 Windows 安装程序发行版格式提供。

需求#

要安装的 的规范。 pipPYPA 推荐的安装程序,允许各种形式的规范,所有这些规范都可以被视为“需求”。有关更多信息,请参阅 pip install 参考。

需求说明符#

pip 用于从 包索引 安装包的格式。有关该格式的 EBNF 图,请参阅 依赖项说明符。例如,“foo>=1.3”是一个需求说明符,其中“foo”是项目名称,“>=1.3”部分是 版本说明符

需求文件#

包含 需求 列表的文件,可以使用 pip 进行安装。有关更多信息,请参阅 pip 文档中的 需求文件

setup.py#
setup.cfg#

适用于 distutilsSetuptools 的项目规范文件。另请参阅 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 中引入并由 二进制分发格式 规范定义的标准 构建分发 格式。有关更多信息,请参阅 包格式。不要将其与其参考实现 轮子项目 混淆。

轮子项目#

轮子格式 的 PyPA 参考实现;请参阅 wheel

工作集#

可用于导入的 分发 集合。这些分发位于 sys.path 变量上。在一个工作集中,一个项目最多可能有一个 分发