术语表¶
- 二进制分发¶
一种包含编译扩展的特定类型的已构建分发。
- 构建后端¶
一个库,它接收一个源树并从中构建源分发或已构建分发。构建由前端委托给后端。所有后端都提供一个标准化的接口。
构建后端的示例有flit 的 flit-core、hatch 的 hatchling、Maturin、meson-python、scikit-build-core 和Setuptools。
- 构建前端¶
- 已构建分发¶
一种分发包格式,包含只需要移动到目标系统正确位置即可安装的文件和元数据。Wheel就是这样一种格式,而源分发则不是,因为它在安装前需要一个构建步骤。这种格式并不意味着 Python 文件必须预编译(Wheel有意不包含编译后的 Python 文件)。有关更多信息,请参阅包格式。
- 已构建元数据¶
核心元数据在安装的项目(
METADATA文件)或分发归档(Sdist中的PKG-INFO和Wheel中的METADATA)中包含时的具体形式。- 核心元数据¶
- 核心元数据字段¶
核心元数据规范中定义并存储在已构建元数据中的单个键值对(或具有相同名称的此类序列,用于多用途字段)。值得注意的是,它与Pyproject 元数据键不同。
- 分发归档¶
分发包的物理分发工件(即磁盘上的文件)。
- 分发包¶
一个带有版本号的归档文件,包含 Python 包、模块和其他资源文件,用于分发发布版本。这个归档文件是最终用户将从互联网下载并安装的文件。
分发包更常被称为“包”或“分发”,但当需要更清晰地避免与导入包(也常称为“包”)或其他类型的分发(例如 Linux 分发或 Python 语言分发)混淆时,本指南可能会使用扩展术语,这些也常被称为“分发”。有关差异的详细说明,请参阅分发包与导入包。
- Egg¶
由Setuptools引入的已构建分发格式,已被Wheel取代。有关详细信息,请参阅Egg 又如何?。
- 扩展模块¶
使用 Python 实现的底层语言编写的模块:C/C++ 用于 Python,Java 用于 Jython。通常包含在单个可动态加载的预编译文件中,例如,Unix 上 Python 扩展的共享对象 (.so) 文件,Windows 上 Python 扩展的 DLL(给定 .pyd 扩展名),或 Jython 扩展的 Java 类文件。
- 导入包¶
一个 Python 模块,可以包含其他模块,或者递归地包含其他包。
导入包更常被称为“包”,但当需要更清晰地避免与分发包混淆时,本指南将使用扩展术语,分发包也常被称为“包”。有关差异的详细说明,请参阅分发包与导入包。
- 已安装项目¶
- 已知良好集合 (KGS)¶
一组特定版本的、彼此兼容的分发。通常会运行一个测试套件,在所有测试通过后,特定的一组包才会被声明为已知良好集合。这个术语通常用于由多个独立分发组成的框架和工具包。
- 许可证分类器¶
- 许可证表达式¶
- SPDX 表达式¶
一个具有有效 SPDX 许可证表达式语法的字符串,包含一个或多个 SPDX 许可证标识符,描述了一个项目的许可证及其相互关系。示例:
GPL-3.0-or-later,MIT AND (Apache-2.0 OR BSD-2-Clause)- 许可证标识符¶
- SPDX 标识符¶
一个有效的 SPDX 短格式许可证标识符,最初在PEP 639中指定。这包括所有有效的 SPDX 标识符和符合 SPDX 规范的自定义
LicenseRef-[idstring]字符串。示例:MIT,GPL-3.0-only,LicenseRef-My-Custom-License- 模块¶
- 包索引¶
一个分发仓库,具有用于自动化包发现和消费的 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.toml文件的
[project]表下的Pyproject 元数据键中。值得注意的是,它不是pyproject.toml的[tool]表下的工具特定源元数据格式。- Pyproject 元数据键¶
pyproject.toml中[project]表中的顶级 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”部分是版本说明符。
- 需求文件¶
- 根许可证目录¶
- 许可证目录¶
项目源树、分发归档或已安装项目中存储许可证文件的目录。对于项目源树或源分发(或“sdist”),这是项目根目录。对于已构建分发或已安装项目,这是 wheel 归档或项目文件夹中的
.dist-info/licenses/目录。此外,它是License-File核心元数据字段中记录的路径的相对根目录。- 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 环境,允许为特定应用程序安装包,而不是系统范围安装。有关更多信息,请参阅创建虚拟环境部分。
- Wheel 格式¶
- Wheel¶
标准已构建分发格式,最初在PEP 427中引入,并由二进制分发格式规范定义。有关更多信息,请参阅包格式。不要与它的参考实现Wheel 项目混淆。
- Wheel 项目¶
- 工作集¶