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 文件格式是一组由 rfc822.py 模块可解析的 RFC 822 标头。以下部分列出的字段名称用作标头名称。此简单格式中没有扩展机制;Catalog 和 Distutils SIG 将致力于为 Python 2.2 准备更灵活的格式。
字段
本节指定每个受支持的元数据字段的名称和语义。
标记为“(可多次使用)”的字段可以在单个 PKG-INFO 文件中多次指定。其他字段只能在 PKG-INFO 文件中出现一次。标记为“(可选)”的字段不需要出现在有效的 PKG-INFO 文件中,所有其他字段都必须存在。
Metadata-Version
文件格式的版本;目前“1.0”是此处唯一合法的值。
示例
Metadata-Version: 1.0
Name
软件包的名称。
示例
Name: BeagleVote
Version
包含软件包版本号的字符串。此字段应可由 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
软件包功能的单行摘要。
示例
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/
License
从简短的选择列表中选择的字符串,指定覆盖软件包的许可证。某些许可证会导致软件可自由重新分发,因此打包人员和经销商可以自动知道他们可以自由重新分发软件。其他许可证将需要人工仔细阅读才能确定如何重新打包和转售软件。
选择包括:
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 许可证下。 |
公有领域 | 软件属于公有领域,不受版权保护。 |
未知 | 状态未知 |
禁止商业用途 | 免费私人使用,但禁止商业用途 |
禁止出售 | 免费使用,但按协议获利分发 |
无源代码 | 可自由分发,但无源代码 |
共享软件 | 如果使用软件,则要求付款 |
其他 | 其他非 DFSG 许可证的一般类别 |
其中一些许可证可以解释为意味着软件可自由重新分发。可重新分发许可证的列表为:
Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT",
Mozilla PL, "public domain", Python, Qt PL, Zope PL,
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
上次修改时间:2024年4月14日 13:35:25 GMT