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命令将从参数中提取元数据字段,并将它们写入生成的zipfile或tarball中的一个文件。该文件将命名为PKG-INFO,并放置在源代码分发的顶层目录中(README、INSTALL和其他文件通常所在的位置)。
开发者不得提供他们自己的PKG-INFO文件。sdist命令如果检测到现有的PKG-INFO文件,将以适当的错误消息终止。这应该防止因PKG-INFO和setup.py文件不同步而造成的混淆。
PKG-INFO文件格式是一组可由rfc822.py模块解析的RFC 822头。以下部分列出的字段名称用作头名称。
字段
本节规定了每个支持的元数据字段的名称和语义。
标有“(多次使用)”的字段可以在单个 PKG-INFO 文件中多次指定。其他字段在 PKG-INFO 文件中只能出现一次。标有“(可选)”的字段在有效的 PKG-INFO 文件中不是必需的;所有其他字段都必须存在。
元数据版本(Metadata-Version)
文件格式的版本;目前“1.0”和“1.1”是此处唯一的合法值。
示例
Metadata-Version: 1.1
名称
软件包的名称。
示例
Name: BeagleVote
版本
包含软件包版本号的字符串。此字段应可由distutils.version模块中的版本类(StrictVersion或LooseVersion)之一解析。
示例
Version: 1.0a2
平台(Platform)(多重使用)
一个逗号分隔的平台规范列表,总结了软件包支持的操作系统,这些操作系统未在“操作系统”Trove分类器中列出。参见下文“分类器”。
示例
Platform: ObscureUnix, RareDOS
支持平台(多用)
包含PKG-INFO文件的二进制分发将在其元数据中使用Supported-Platform字段来指定编译二进制软件包的操作系统和CPU。Supported-Platform字段的语义未在本PEP中指定。
示例
Supported-Platform: RedHat 7.2
Supported-Platform: i386-win32-2791
总结
对软件包功能的单行摘要。
示例
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/
下载URL
包含可以下载此版本软件包的URL的字符串。(这意味着URL不能是“…/package-latest.tgz”之类的,而必须是“../package-0.45.tgz”。)
许可
指示软件包所涵盖许可证的文本,其中许可证不是“许可证”Trove分类器中的选择。参见下文“分类器”。
示例
License: This software may only be obtained by sending the
author a postcard, and then the user promises not
to redistribute it.
分类器(多用)
每个条目是一个字符串,为软件包提供一个分类值。分类器在PEP 301中描述。
示例
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console (Text Based)
要求(多用)
每个条目包含一个字符串,描述此软件包所需的其他模块或软件包。
需求字符串的格式与可与“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
提供(多用)
每个条目包含一个字符串,描述此软件包安装后将提供的软件包或模块。这些字符串应与Requirements字段中使用的字符串匹配。可以提供版本声明(不带比较运算符);如果未指定,将隐含软件包的版本号。
示例
Provides: xml
Provides: xml.utils
Provides: xml.utils.iso8601
Provides: xml.dom
Provides: xmltools (1.3)
废弃(多用)
每个条目包含一个字符串,描述此软件包将废弃的软件包或模块,这意味着这两个软件包不应同时安装。可以提供版本声明。
此字段最常见的用途是软件包名称更改的情况,例如,Gorgon 2.3被并入Torqued Python 1.0。当您安装Torqued Python时,Gorgon软件包应该被删除。
示例
Obsoletes: Gorgon
与PEP 241的不同之处摘要
- 元数据版本现在是1.1。
- 添加了来自PEP 301的Classifiers字段。
- License和Platform文件现在只应在平台或许可证无法通过适当的分类器值处理时使用。
- 添加了字段:Download-URL、Requires、Provides、Obsoletes。
开放问题
无。
致谢
无。
参考资料
版权
本文档已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0314.rst