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”。)
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