PEP 241 – Python 软件包元数据
- 作者:
- A.M. Kuchling <amk at amk.ca>
- 讨论至:
- Distutils-SIG 邮件列表
- 状态:
- 已取代
- 类型:
- 标准跟踪
- 主题:
- 打包
- 创建日期:
- 2001年3月12日
- 发布历史:
- 2001年3月19日
- 取代者:
- 314
引言
本PEP描述了一种为Python软件包添加元数据的机制。它包括字段名称及其语义和用法的具体细节。
在软件包中包含元数据
Distutils的“sdist”命令将被修改,以从参数中提取元数据字段,并将它们写入生成的zip文件或tarball中的一个文件。该文件将被命名为PKG-INFO,并放置在源分发的顶级目录中(通常是README、INSTALL和其他文件所在的位置)。
开发者不得提供自己的PKG-INFO文件。如果“sdist”命令检测到现有的PKG-INFO文件,它将终止并显示适当的错误消息。这应该可以防止因PKG-INFO和setup.py文件不同步而导致的混淆。
PKG-INFO文件格式是一组RFC 822头,可通过rfc822.py模块解析。以下部分列出的字段名称用作头名称。这种简单格式中没有扩展机制;Catalog和Distutils SIG将致力于为Python 2.2准备更灵活的格式。
字段
本节规定了每个支持的元数据字段的名称和语义。
标有“(多重使用)”的字段可以在单个PKG-INFO文件中指定多次。其他字段在PKG-INFO文件中只能出现一次。标有“(可选)”的字段不必出现在有效的PKG-INFO文件中,所有其他字段都必须存在。
元数据版本(Metadata-Version)
文件格式的版本;目前“1.0”是此处唯一的合法值。
示例
Metadata-Version: 1.0
名称
软件包的名称。
示例
Name: BeagleVote
版本
一个包含软件包版本号的字符串。此字段应可由distutils.version模块中的Version类(StrictVersion或LooseVersion)之一解析。
示例
Version: 1.0a2
平台(Platform)(多重使用)
一个以逗号分隔的平台规范列表,概述了软件包支持的操作系统。主要支持的平台列举如下,但此列表必然不完整。
POSIX, MacOS, Windows, BeOS, Palm OS.
二进制分发将在其元数据中使用Supported-Platform字段来指定编译二进制软件包的操作系统和CPU。Supported-Platform的语义未在此PEP中指定。
示例
Platform: POSIX, Windows
总结
对软件包功能的一行摘要。
示例
Summary: A module for collecting votes from beagles.
描述(Description)(可选)
对软件包的较长描述,可以包含多段。 (处理元数据的软件不应假定此字段有任何最大大小,尽管希望人们不会将他们的说明手册作为长描述。)
示例
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/
许可
一个从短列表中选择的字符串,指定涵盖软件包的许可证。某些许可证导致软件可以自由再分发,因此打包商和经销商可以自动知道他们可以自由再分发软件。其他许可证将需要人工仔细阅读以确定软件如何重新打包和转售。
选择项是
Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT",
Mozilla PL, "public domain", Python, Qt PL, Zope PL, unknown,
nocommercial, nosell, nosource, shareware, other
某些许可证的定义是
| DFSG | 该许可证符合Debian自由软件指南,但未使用此处列出的其他符合DFSG的许可证之一。更多信息请访问:http://www.debian.org/social_contract#guidelines |
| Python | Python 1.6或更高版本许可证。1.5.2及更早版本受MIT许可证保护。 |
| 公共领域(public domain) | 软件为公共领域,不受版权保护。 |
| 未知(unknown) | 状态未知 |
| 不可商用(nocommercial) | 免费私人使用,但禁止商业使用 |
| 不可销售(nosell) | 免费使用,但分发以盈利需经安排 |
| 无源代码(nosource) | 可自由分发,但无源代码 |
| 共享软件(shareware) | 如果使用软件,则要求付费 |
| 其他(other) | 其他非DFSG许可证的通用类别 |
其中一些许可证可以解释为软件可以自由再分发。可再分发许可证列表是
Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT",
Mozilla PL, "public domain", Python, Qt PL, Zope PL,
nosource, shareware
请注意,可再分发并不意味着软件包符合自由软件的条件,“nosource”和“shareware”就是例子。
示例
License: MIT
致谢
本文档的许多更改和重写都是由Distutils SIG的读者建议的。特别是,Sean Reifschneider经常提供实际文本以纳入此PEP。
许可证列表是根据SourceForge许可证列表和Graham Williams整理的CTAN许可证列表汇编而成的;Carey Evans也为此列表提供了几个有用的建议。
版权
本文档已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0241.rst