PyPI项目页面中的“Py版本”是什么意思?这有关系吗?

2024-09-29 21:52:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

如果包不是通用包或不是纯python包,那么它们的值是可以理解的不同的,以表示它们的目标平台,例如thisnose page和thissimplejson page。在

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

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

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


Tags: 数据项目py版本pypi内容目标page
2条回答

无论您在何处看到2.7或{}或其他Python版本,该列被设置为by the ^{} command,这是基于使用构建的当前Python版本,但这是错误的值。这是Wheels项目问题跟踪程序中的bug 102。在

这也是PyPI项目中的reported as a bug。对于所有这些项目,它真的应该说py2.py3。幸运的是,对于用于安装wheels的工具来说这并不重要,您仍然有一个通用的wheel,它将用于python2或python3上的安装。在

这不是PyPI的错,但是字段是由执行上载的工具设置的。^{} XML-RPC handler从上载程序获取未更改的值,并将其插入数据库以供以后显示。当使用setuptools upload时,该值最终源于生成分发文件的代码,因此在本例中是bdist_wheel。在

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

至于any值,可以通过在PyPI接口中手动上载一个文件来设置,也可以是另一个工具或twine或{}的以前版本。在

自从有人提出这个问题以来,PyPI设计已经从项目页面中删除了“Py Version”;Py版本似乎与用于上载包的wheel标记或Python版本有关,并且不会影响Python的哪个版本可以下载源包。在

PyPI确实提供了Requires-Python元数据Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*(如果可用)。这个标记独立于包格式,并且是pip中一个相对较新的特性,它控制安装程序是否尝试在Python的目标版本中安装特定的项目。在

相关问题 更多 >

    热门问题