术语表

二进制分发

一种特定的 构建分发,它包含编译的扩展。

构建分发

一个 分发 格式包含只需要移动到目标系统上正确位置的文件和元数据,即可安装。Wheel 是这样一种格式,而 distutil 的 源分发 不是,因为它需要一个构建步骤才能安装。这种格式并不意味着必须预编译 Python 文件(Wheel 故意不包括编译的 Python 文件)。

分发包

一个版本化的存档文件包含 Python 模块 和其他用于分发 发行版 的资源文件的版本化存档文件。存档文件是最终用户将从 Internet 下载并安装的文件。

分发包更常被称为“包”或“套件”,但是当需要更清楚地防止与 导入包 混淆时,本指南可能会使用扩展术语(通常也称为“包”)或另一种发行版(例如 Linux 发行版或 Python 语言发行版),通常用单个术语 “发行版” 来指代。

Egg

A Built Distribution format introduced by setuptools, which is being replaced by Wheel. For details, see The Internal Structure of Python Eggs and Python Eggs

扩展模块

一个用 Python 实现的低级语言编写的 模块。对 Python 来说是 C/C++,对 Jython 来说是 Java。通常包含在一个可动态加载的预编译文件中,例如,Unix 上的 Python 扩展是一个共享对象(.so)文件,Windows 上的 Python 扩展是一个 DLL(给出了 .pyd 扩展),或者 Jython 扩展是一个 Java 类文件。

已知良好集(KGS)

一组相互兼容的指定版本的发行版。通常,将运行一个测试套件,该套件在一组特定的包被声明为已知良好集之前通过所有测试。 该术语通常用于由多个单独发行版组成的框架和工具包。

导入包

一个Python模块,可以包含其他模块或递归地包含其他包。

导入包通常用单个词“包”来指代,但本指南将在需要更清楚地说明时使用扩展术语,以防止与通常也称为“包”的 分发包 混淆.

模块

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

包索引

一个带有 Web 界面的发行版存储库,用于自动化 发现和消费。

每个项目索引

A private or other non-canonical Package Index indicated by a specific Project as the index preferred or required to resolve dependencies of that project.

项目

库、框架、脚本、插件、应用程序或数据或其他资源的集合,或它们的一些组合,旨在被打包成一个 套件

由于大多数项目使用 PEP 518 build-systemdistutilssetuptools 来创建 套件,目前另一种实用的项目定义方式是在项目源目录的根部包含一个 pyproject.toml, setup.py, 或 setup.cfg 的东西。

Python 项目必须具有独特且唯一的名称,这些名字可以在 PyPI 上注册。然后每个项目将包含一个或多个 发行版 ,每个版本可能包括一个或多个 套件

Note that there is a strong convention to name a project after the name of the package that is imported to run that project. However, this doesn’t have to hold true. It’s possible to install a distribution from the project ‘foo’ and have it provide a package importable only as ‘bar’.

纯模块

一个用 Python 编写的 模块,包含在一个 .py 文件中(可能还有相关的 .pyc 和/或者 .pyo 文件)。

Python 包装管理局 (PyPA)

PyPA 是一个工作小组,负责维护 Python 包装中的许多相关项目。他们在 pypa.ioGitHubBitbucket 上托管项目,并在 distutils-sig 邮件列表Python Discourse 论坛 上讨论问题。

Python 包索引(PyPI)

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

pypi.org

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

pyproject.toml

The tool-agnostic Project specification file. Defined in PEP 518.

发行版

A snapshot of a Project at a particular point in time, denoted by a version identifier.

发布一个版本可能需要发布多个 套件。例如,如果一个项目的 1.0 版本被发布,它可能同时具有源码发布格式和 Windows 安装程序发布格式。

需求

A specification for a package to be installed. pip, the PYPA recommended installer, allows various forms of specification that can all be considered a “requirement”. For more information, see the pip install reference.

Requirement Specifier

A format used by pip to install packages from a Package Index. For an EBNF diagram of the format, see the pkg_resources.Requirement entry in the setuptools docs. For example, “foo>=1.3” is a requirement specifier, where “foo” is the project name, and the “>=1.3” portion is the Version Specifier

Requirements File

A file containing a list of Requirements that can be installed using pip. For more information, see the pip docs on Requirements Files.

setup.py
setup.cfg

The project specification files for distutils and setuptools. See also pyproject.toml.

Source Archive

An archive containing the raw source code for a Release, prior to creation of a Source Distribution or Built Distribution.

源分发(或 “sdist”)

一个 套件 格式(通常使用 python setup.py sdist 生成),提供元数据和用 pip 等工具安装所需的基本源文件,或生成 构建分发

系统包

以操作系统本地格式提供的软件包,例如 rpm 或 dpkg 文件。

版本说明符

The version component of a Requirement Specifier. For example, the “>=1.3” portion of “foo>=1.3”. PEP 440 contains a full specification of the specifiers that Python packaging currently supports. Support for PEP440 was implemented in setuptools v8.0 and pip v6.0.

虚拟环境

一个隔离的 Python 环境,允许安装软件包以供特定的应用程序使用,而不是在系统中安装。更多信息,请参见 创建和使用虚拟环境 一节。

Wheel

构建分发 格式由 PEP 427 引入,旨在取代 Egg 格式。 Wheel 目前由 pip 支持。

工作集

一组 套件 的集合,可供导入。这些是在 sys.path 变量上的分布。在一个工作集中,一个项目最多可以有一个 套件