Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 增强提案

PEP 314 – Python 软件包元数据 1.1

作者:
A.M. Kuchling, Richard Jones
讨论列表:
Distutils-SIG 列表
状态:
已取代
类型:
标准跟踪
主题:
打包
创建:
2003年4月12日
Python 版本:
2.5
历史记录:
2003年4月29日
取代:
241
被取代:
345

目录

简介

本 PEP 描述了一种向 Python 软件包添加元数据的机制。它包括字段名称、语义和用法的具体信息。

本文档指定了元数据格式的 1.1 版。1.0 版在PEP 241中指定。

在软件包中包含元数据

Distutils 的sdist命令将从参数中提取元数据字段,并将它们写入生成的 zip 文件或 tarball 中的一个文件中。该文件将命名为 PKG-INFO,并将放置在源发行版的顶级目录中(通常 README、INSTALL 和其他文件所在的位置)。

开发者可能不会提供他们自己的 PKG-INFO 文件。sdist命令如果检测到现有的 PKG-INFO 文件,将以适当的错误消息终止。这应该可以防止由 PKG-INFO 和 setup.py 文件不同步引起的混淆。

PKG-INFO 文件格式是一组RFC 822标头,可由 rfc822.py 模块解析。以下部分列出的字段名称用作标头名称。

字段

本节指定每个受支持元数据字段的名称和语义。

标有“(可多次使用)”的字段可以在单个 PKG-INFO 文件中多次指定。其他字段只能在 PKG-INFO 文件中出现一次。标有“(可选)”的字段不需要出现在有效的 PKG-INFO 文件中;所有其他字段都必须存在。

Metadata-Version

文件格式的版本;目前“1.0”和“1.1”是此处唯一合法的值。

示例

Metadata-Version: 1.1

Name

软件包的名称。

示例

Name: BeagleVote

Version

包含软件包版本号的字符串。此字段应可由 distutils.version 模块中的某个 Version 类(StrictVersion 或 LooseVersion)解析。

示例

Version: 1.0a2

Platform(可多次使用)

平台规范的逗号分隔列表,总结了软件包支持的操作系统,这些操作系统未列在“操作系统”Trove 分类器中。请参阅下面的“Classifier”。

示例

Platform: ObscureUnix, RareDOS

Supported-Platform(可多次使用)

包含 PKG-INFO 文件的二进制发行版将使用其元数据中的 Supported-Platform 字段来指定为其编译二进制软件包的操作系统和 CPU。Supported-Platform 字段的语义未在本 PEP 中指定。

示例

Supported-Platform: RedHat 7.2
Supported-Platform: i386-win32-2791

Summary

软件包功能的单行摘要。

示例

Summary: A module for collecting votes from beagles.

Description(可选)

软件包的较长描述,可以扩展到几个段落。处理元数据的软件不应假设此字段的任何最大大小,尽管人们不应将他们的使用手册作为描述。

此字段的内容可以使用 reStructuredText 标记编写[1]。对于处理元数据的程序,支持标记是可选的;程序也可以按原样显示字段的内容。这意味着作者在使用的标记方面应该保持谨慎。

示例

Description: This module collects votes from beagles
             in order to determine their electoral wishes.
             Do *not* try to use this module with basset hounds;
             it makes them grumpy.

Keywords(可选)

用于帮助在更大的目录中搜索软件包的其他关键字列表。

示例

Keywords: dog puppy voting election

Home-page(可选)

包含软件包主页 URL 的字符串。

示例

Home-page: http://www.example.com/~cschultz/bvote/

Download-URL

包含此版本的软件包可下载 URL 的字符串。(这意味着 URL 不能是类似“…/package-latest.tgz”的内容,而必须是“../package-0.45.tgz”。)

Author(可选)

包含作者姓名的字符串,至少;可以提供其他联系信息。

示例

Author: C. Schultz, Universal Features Syndicate,
        Los Angeles, CA <cschultz@peanuts.example.com>

Author-email

包含作者电子邮件地址的字符串。它可以包含RFC 822“From:”标头的合法形式的姓名和电子邮件地址。它不是可选的,因为编目系统可以使用此字段的电子邮件部分作为表示作者的唯一键。目录可能为作者提供存储其 GPG 密钥、个人主页和其他关于作者的其他元数据的能力,以及可以选择将多个电子邮件地址与同一个人关联的能力。作者相关的元数据字段不在本 PEP 的范围内。

示例

Author-email: "C. Schultz" <cschultz@example.com>

License

指示覆盖软件包的许可证的文本,其中许可证不是“许可证”Trove 分类器中的选择。请参阅下面的“Classifier”。

示例

License: This software may only be obtained by sending the
         author a postcard, and then the user promises not
         to redistribute it.

Classifier(可多次使用)

每个条目都是一个字符串,为软件包提供单个分类值。分类器在PEP 301中进行了描述。

示例

Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console (Text Based)

Requires(可多次使用)

每个条目都包含一个字符串,描述此软件包所需的某些其他模块或软件包。

需求字符串的格式与可与“import”语句一起使用的模块或软件包名称相同,后面可以选择跟在括号中的版本声明。

版本声明是一系列条件运算符和版本号,用逗号分隔。条件运算符必须是“<”、“>”、“<=”、“>=”、“==”和“!=”之一。版本号必须采用 distutils.version.StrictVersion 类接受的格式:两个或三个点分隔的数字组件,末尾可选带有一个“预发布”标签,该标签由字母“a”或“b”后跟一个数字组成。示例版本号为“1.0”、“2.3a2”、“1.3.99”。

可以指定任意数量的条件运算符,例如字符串“>1.0, !=1.3.4, <2.0”是一个合法的版本声明。

所有以下内容都是可能的必需字符串:“rfc822”、“zlib (>=1.1.4)”、“zope”。

没有规范的字符串列表应该使用哪些字符串;Python 社区可以自行选择标准。

示例

Requires: re
Requires: sys
Requires: zlib
Requires: xml.parsers.expat (>1.0)
Requires: psycopg

Provides(可多次使用)

每个条目都包含一个字符串,描述安装此软件包后将由其提供的软件包或模块。这些字符串应与“需求”字段中使用的字符串匹配。可以提供版本声明(无需比较运算符);如果未指定版本,则将隐含软件包的版本号。

示例

Provides: xml
Provides: xml.utils
Provides: xml.utils.iso8601
Provides: xml.dom
Provides: xmltools (1.3)

Obsoletes(可多次使用)

每个条目都包含一个字符串,描述此软件包使之过时的软件包或模块,这意味着这两个软件包不应同时安装。可以提供版本声明。

此字段最常见的用途是在软件包名称更改的情况下,例如 Gorgon 2.3 被纳入 Torqued Python 1.0。安装 Torqued Python 时,应删除 Gorgon 软件包。

示例

Obsoletes: Gorgon

与 PEP 241 的差异总结

  • Metadata-Version 现在是 1.1。
  • PEP 301中添加了 Classifiers 字段。
  • 现在,只有在平台或许可证无法通过适当的 Classifier 值处理时,才能使用 License 和 Platform 文件。
  • 添加了字段:Download-URL、Requires、Provides、Obsoletes。

未解决的问题

无。

致谢

无。

参考文献


来源:https://github.com/python/peps/blob/main/peps/pep-0314.rst

上次修改时间:2023-09-09 17:39:29 GMT