"Programming Language" setuptools 分类器中版本的用途是什么?
What's the purpose of version in "Programming Language" classifier of setuptools?
假设一个 Python 应用程序依赖于一个模块,并且该模块仅在其 setup.py 的分类器元数据中声明 "Programming Language :: Python :: 3.5",应用程序可以声明不同版本的 Python 解释器(例如,"Programming Language :: Python :: 3.7" 在它自己的 setup.py?
我在打包我自己的 Python3 应用程序时意识到了这个问题,我想为此支持所有最近的 Python3 版本。该应用程序依赖于 wcwidth 模块 (https://pypi.org/project/wcwidth/)。 Wcwidth 模块在其编程语言支持中仅列出 "Python :: 3.4" 和 "Python :: 3.5"。所以我想知道如果我 运行 "pip install " 使用 Python3.7 解释器会怎样?我虽然会失败,但事实证明安装工作正常,因为 pip 下载了 wcwidth 源代码并在我的机器上编译了它。
所以 pip 在安装包时似乎根本不检查分类器?
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不被接受,比如半年,那么这个项目就被放弃了。如果适合您,您仍然可以继续使用废弃的项目。或者你可以找一个替代品。或者如果你真的需要这个项目,你可以 fork 它,更新并继续维护它。
假设一个 Python 应用程序依赖于一个模块,并且该模块仅在其 setup.py 的分类器元数据中声明 "Programming Language :: Python :: 3.5",应用程序可以声明不同版本的 Python 解释器(例如,"Programming Language :: Python :: 3.7" 在它自己的 setup.py?
我在打包我自己的 Python3 应用程序时意识到了这个问题,我想为此支持所有最近的 Python3 版本。该应用程序依赖于 wcwidth 模块 (https://pypi.org/project/wcwidth/)。 Wcwidth 模块在其编程语言支持中仅列出 "Python :: 3.4" 和 "Python :: 3.5"。所以我想知道如果我 运行 "pip install " 使用 Python3.7 解释器会怎样?我虽然会失败,但事实证明安装工作正常,因为 pip 下载了 wcwidth 源代码并在我的机器上编译了它。
所以 pip 在安装包时似乎根本不检查分类器?
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不被接受,比如半年,那么这个项目就被放弃了。如果适合您,您仍然可以继续使用废弃的项目。或者你可以找一个替代品。或者如果你真的需要这个项目,你可以 fork 它,更新并继续维护它。