python - PyPI 项目页面中的 "Py Version"是什么意思?这有关系吗?

标签 python setup.py pypi python-wheel

我注意到,大多数在 PyPI 上发布的项目在其项目页面中都包含“Py 版本”元数据,但它们的值各不相同。

如果包不是通用包或不是纯 python 包,它们的值是可以理解的不同,以表示它们的目标平台,例如 nose page还有这个simplejson page .

但是其他一些通用纯(据我所知)Python 包仍然包含略有不同的内容。例如:

所以我的问题是,它们是由作者用来构建其发布包的不同工具链引起的吗?我尝试运行 python2 setup.py sdist bdist_wheel --universal upload 给了我一个“2.7”Py 版本值。下次我会尝试 python3 ... 然后 twine ... 看看我会得到什么。

更重要的是,所有这些都重要吗?我前面提到的命令行仍然构建了一个适合其他人在 Python 2 和 Python 3 环境中使用的通用包,不是吗?

最佳答案

任何你看到 2.73.5 或其他 Python 版本的地方,该列都设置为 by the bdist_wheel command ,基于用于构建的当前 Python 版本,但这是错误的值。这是 bug 102在 Wheels 项目问题跟踪器中。

这也是 reported as a bug在 PyPI 项目中。对于所有这些项目,它确实应该说 py2.py3。幸运的是,对于用于安装轮子的工具来说,该专栏所说的并不重要,您仍然有一个通用的轮子,它将用于在 Python 2 或 Python 3 上安装。

然而,这不是 PyPI 的错,该字段由执行上传的工具设置file_upload() XML-RPC handler从 uploader 中获取不变的值并将其插入数据库以供以后显示。使用 setuptools upload 时,该值最终来自构建分发文件的代码,因此在这种情况下为 bdist_wheel

如果您非常关心自己的项目在那里列出正确的信息,那么我建议您使用 twine uploader反而;这个包裹extracts the pyversion field from the wheel filename .在 Py 版本 列中设置了 py2.py3 的任何项目都使用该工具进行上传。 Twine 还有许多其他优势,尤其是您可以使用它通过 HTTPS 上传文件安全

至于 any 值,可以通过在 PyPI 界面中手动上传文件来设置,或者可能是其他工具或 twine 的早期版本setuptools bdist_wheel 我不知道。

关于python - PyPI 项目页面中的 "Py Version"是什么意思?这有关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415349/

相关文章:

python - 使用向后兼容 (MacOS10.9+) 的 MacOS 10.15 (Catalina) 创建 Python C 扩展

python - 是否有类似于 C++ 中的 std::bitset 的内置位集?

python - Django管理工具新版本模型变化

python - 在 setup.py 应用程序中提供对模块相关文件的访问的公认做法

python - 如何从python安装文件中排除特定的依赖包版本

python - setup.py 的库路径?

python - 在 pypi.org 上查找 Python 包并导入某个包

python - 为什么我的 Python 包的分类器没有出现在测试 PyPI 上?

python - 3套以上的比例维恩图

python - luigi 配置文件在哪里?