我注意到,在PyPI上发布的大多数项目在其项目页面中都包含一个“Py版本”元数据,但是它们的值是不同的。在
如果包不是通用包或不是纯python包,那么它们的值是可以理解的不同的,以表示它们的目标平台,例如thisnose page和thissimplejson page。在
但是其他一些通用的纯Python包(据我所知)仍然包含稍微不同的内容。例如:
所以我的问题是,它们是由作者用来构建发布包的不同工具链引起的吗?我尝试运行python2 setup.py sdist bdist_wheel --universal upload
得到了一个“2.7”Py版本值。下一次我将尝试python3 ...
,然后twine ...
看看我会得到什么。在
更重要的是,所有这些都重要吗?我前面提到的命令行仍然构建了一个通用的包,适合python2和python3环境中的其他人使用,不是吗?在
无论您在何处看到}或其他Python版本,该列被设置为by the ^{} command ,这是基于使用构建的当前Python版本,但这是错误的值。这是Wheels项目问题跟踪程序中的bug 102。在
2.7
或{这也是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的目标版本中安装特定的项目。在相关问题 更多 >
编程相关推荐