我该使用哪些Python Trove分类器?

25 投票
1 回答
4480 浏览
提问于 2025-04-17 12:52

Trove 分类器的列表可以在这里找到:http://pypi.python.org/pypi?:action=list_classifiers

当我在创建一个 PyPI 包的时候,我不太确定是否需要把明显适用于我项目的分类器的“父级”也包含进去。

举个例子,如果我在 Windows XP 上测试过我的项目,那么我应该包含以下哪个分类器呢:

'Operating System :: Microsoft',
'Operating System :: Microsoft :: Windows',
'Operating System :: Microsoft :: Windows :: Windows NT/2000',

其实我只是在 Windows 7 或者有时候在 Windows XP 上测试过。但是这两个选项在分类器列表里都没有,所以我选择“NT/2000”作为最接近的匹配,并且包含了“父级”分类器。这样做对吗?

同样,如果我的项目是在 Python 2.7 下测试的,那么我显然需要包含这个分类器:

'Programming Language :: Python :: 2.7',

我还需要包含:

'Programming Language :: Python',
'Programming Language :: Python :: 2',

第一个是原始分类器的严格“父级”,所以是否包含这个应该和上面提到的“Windows”父级分类器的情况是一样的。

不过要注意,“Python :: 2”并不是“2.7”分类器的父级 - 它是一个兄弟分类器。如果包含它是为了表示我的项目在某些 2.x 的 Python 版本下可以运行,那这样做是有意义的,但如果是想表示我的项目在所有 2.x 版本下都能运行,那就不太合适了。

1 个回答

16

从技术上讲,你不一定需要包含父标签。比如说,lxml 列出了这些标签(但没有列出它们的父标签):

Topic :: Text Processing :: Markup :: HTML
Topic :: Text Processing :: Markup :: XML 

而且如果你去浏览被分类为 主题 :: 文本处理 :: 标记 的包,lxml 也在其中。

至于包含父标签是否能让用户更清楚,我就不太确定了。

我理解 编程语言 :: Python :: 2 是指某些 Python 2.x 的版本,而不是所有的 Python 2.x 版本——看起来很多项目都是这样使用的(比如说 lxml 又来了)。

至于操作系统,我会用它来定义这个包预期能在什么系统上运行,而不仅仅是你能测试过的环境。所以我只会对一个只能在 Windows 上运行的工具使用 Windows 分类,而不会把它用于其他操作系统的工具。这并不意味着有支持合同。

现在,Windows 和 Windows NT/2000 的标签可能差不多了。

撰写回答