【问题标题】:What's the purpose of version in "Programming Language" classifier of setuptools?setuptools的“编程语言”分类器中版本的目的是什么?
【发布时间】:2019-09-08 09:24:40
【问题描述】:

假设 Python 应用程序依赖于一个模块,并且该模块在 setup.py 的分类元数据中仅声明了“Programming Language :: Python :: 3.5”,那么该应用程序是否可以声明不同版本的 Python 解释器(例如,“Programming语言 :: Python :: 3.7" 在它自己的 setup.py 中?

我在打包自己的 Python3 应用程序时意识到了这个问题,我希望为此支持所有最新的 Python3 版本。该应用程序依赖于 wcwidth 模块 (https://pypi.org/project/wcwidth/)。 Wcwidth 模块在其编程语言支持中仅列出了“Python :: 3.4”和“Python :: 3.5”。所以我想知道如果我在使用 Python3.7 解释器时运行“pip install”会怎样?我虽然会失败,但事实证明安装工作正常,因为 pip 下载了 wcwidth 源并在我的机器上编译了它。

所以看起来 pip 在安装包时根本没有真正检查分类器?

【问题讨论】:

  • 正如您已经指出的,它(只是)元数据。例如,这将显示在 PyPI 上。
  • @KlausD。谢谢你的提示。在我看来,这是一个非常令人困惑的功能。

标签: python pip setuptools


【解决方案1】:

Trove 分类器是作者为用户编写的元数据,而不是像 pip 这样的工具。您可以从中获得一些有用的信息,尤其是通过额外的研究。

例如,如果一个项目声明与 Python 2.4 兼容,您可以确定它永远不会支持 Python 3。

如果项目声明与 Python 3.4 和 3.5 但不兼容 3.7,您可以预期代码将与 3.7 兼容,但仍有可能不兼容。

你也应该调查一下。如果项目很长一段时间没有更新,你应该开始担心项目不再维护,你最好开始寻找更现代的替代品。

在您的问题中,该项目似乎还活着——最近一次提交是在 11 月。这意味着setup.py 中缺少 Python 3.5 和 3.6 可能只是一个忽略。我建议发送一个拉取请求来解决这个问题。

如果 PR 不被接受,比如说半年,那么这个项目就被放弃了。如果它适合您,您仍然可以继续使用废弃的项目。或者你可以找一个替代品。或者,如果您确实需要该项目,您可以分叉、更新并继续维护它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2016-01-10
    • 2016-05-24
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多