我使用哪种Python Trove分类器?

Jon*_*ley 18 python pypi setup.py

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',
Run Code Online (Sandbox Code Playgroud)

我实际上只在Window 7或Windows XP上进行过测试.但这些都不是分类器列表中的选项,因此我选择"NT/2000"作为结束匹配,并包括"父"分类器.这是正确的做法吗?

同样,如果我的项目在Python 2.7下测试,那么我显然包括分类器:

'Programming Language :: Python :: 2.7',
Run Code Online (Sandbox Code Playgroud)

我还需要包括:

'Programming Language :: Python',
'Programming Language :: Python :: 2',
Run Code Online (Sandbox Code Playgroud)

第一个是严格的"父",如果是原始分类器,那么是否包含这个大概就像是否包含上面的"Windows"父母一样.

但请注意,"Python :: 2"不是"2.7"分类器的父级 - 它是兄弟姐妹.如果它旨在表明我的项目在某些 2.x Python版本下工作,那么包括它是有意义的,但如果它意图暗示我的项目在所有 2.x版本下工作则不行.

Tho*_*s K 13

从技术上讲,您不需要包含父标记.例如,lxml列出了这些标签(但没有一个父母):

Topic :: Text Processing :: Markup :: HTML
Topic :: Text Processing :: Markup :: XML 
Run Code Online (Sandbox Code Playgroud)

并浏览到分类为Topic :: Text Processing :: Markup的包列表,包括lxml.

是否包含父标签使用户更清楚,我不确定.

我会Programming Language :: Python :: 2指的是一些 Python 2.x版本,而不是所有 Python 2.x - 似乎很多项目都像这样使用它(例如lxml).

至于操作系统,我会用它来定义预期包的内容,而不仅仅是你能够测试的环境.因此,我只将Windows分类器用于特定于Windows的工具,该工具无法在其他操作系统上运行.它不构成支持合同.

Windows和Windows NT/2000标签现在可能大致相当.

  • 这是有道理的,并且与我自己浏览现有项目后的问题一致.唯一的缺点是"Python :: 2"和"Python :: 3"分类器,它们不是"Python :: 2.7"和"Python :: 3.2"条目(它们是兄弟姐妹)的严格父类,因此可能需要明确指定是否希望您的项目出现在"Python 2"或"Python 3"的搜索中 (2认同)
  • 嗯,我以前从未注意到皱纹.是的,你是对的,除了更具体的分类器之外,我还设置了"Python :: 2"和/或"Python :: 3". (2认同)