什么是" Py版本"在PyPI项目页面意味着什么?这有关系吗?

时间:2016-11-04 04:34:52

标签: python setup.py pypi python-wheel

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

如果包不是通用包或不是纯python包,它们的值可以理解地不同,以表示它们的目标平台,例如nose page和此simplejson page

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

  • 搜索" Py版本"在此requests PyPI page中,您会找到" 2.7"
  • 在此rsa page中,您会找到" 3.5"
  • six page中,它是" py2.py3"
  • python-dateutil page中,您会看到"任何"

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

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

2 个答案:

答案 0 :(得分:2)

根据用于构建的当前Python版本,您看到2.73.5或其他Python版本,该列已设置为by the bdist_wheel command的任何位置,但这是错误的价值。这是Wheels项目问题跟踪器中的bug 102

这也是PyPI项目中的reported as a bug。对于所有这些项目,它应该说py2.py3。幸运的是,用于安装车轮的工具并不重要,该列说,你仍然有一个万向轮,它可以用于安装在Python 2或Python 3上。

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

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

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

答案 1 :(得分:0)

自从提出此问题以来,PyPI设计已从项目页面中删除了“ Py版本”。 Py版本似乎与wheel标签或用于上传软件包的Python版本有关,并且不会影响可以下载源软件包的Python版本。

PyPI确实具有Requires-Python元数据Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*(如果有)。该标签与软件包格式无关,并且与pip中的一项相对较新的功能无关,该功能控制安装程序是否将尝试在Python的目标版本中安装特定项目。