PyPI 项目页面中的 "Py Version" 是什么意思?这有关系吗?
What does the "Py Version" in PyPI project page mean? And does it matter?
我注意到,大多数在 PyPI 上发布的项目在其项目页面中包含 "Py Version" 元数据,但它们的值各不相同。
如果包不是通用包或不是纯python包,它们的值是可以理解的不同,以表示它们的目标平台,例如nose page and this simplejson page.
但是其他一些通用纯(据我所知)Python 包仍然包含略有不同的内容。例如:
- 搜索 "Py Version" 在此 requests PyPI page 您会找到“2.7”
- 在这个rsa page中你会找到“3.5”
- 在six page中是"py2.py3"
- 在 python-dateutil page 你会看到 "any"
所以我的问题是,它们是由作者用来构建他们的发布包的不同工具链引起的吗?我对 运行 python2 setup.py sdist bdist_wheel --universal upload
的尝试给出了“2.7”Py 版本值。下次我会尝试 python3 ...
然后 twine ...
看看我会得到什么。
更重要的是,这些都重要吗?我前面提到的命令行仍然构建了一个适合其他人在 Python 2 和 Python 3 环境中使用的通用包,不是吗?
任何你看到 2.7
或 3.5
或另一个 Python 版本的列,都是在 Wheels 项目问题跟踪器中设置的 by the bdist_wheel
command, based on the current Python version used to build with, but this is the wrong value. This is bug 102。
这也是 PyPI 项目中的 reported as a bug。对于所有这些项目,它确实应该说 py2.py3
。幸运的是,该专栏中所说的安装轮子的工具并不重要,您仍然有一个通用轮子,它将用于 Python 2 或 Python 3 上的安装。 =27=]
然而,这不是 PyPI 的错,该字段是由执行上传的工具设置的。 file_upload()
XML-RPC handler 从上传器中获取未更改的值并将其插入数据库以供稍后显示。当使用 setuptools upload
时,该值最终来自构建分发文件的代码,因此在这种情况下为 bdist_wheel
。
如果您非常关心自己的项目在那里列出正确的信息,那么我建议您使用 twine
uploader instead; this package extracts the pyversion
field from the wheel filename。在 Py Version 列中设置了 py2.py3
的任何项目都使用该工具进行上传。 Twine 还有许多其他优势,尤其是您可以使用它 安全地 通过 HTTPS 上传文件。
至于 any
值,可以通过在 PyPI 界面中手动上传文件来设置,或者可能是其他工具或 twine
或 setuptools bdist_wheel
的先前版本 I'我不知道。
自从提出这个问题后,PyPI 设计已从项目页面中删除 "Py Version"; Py Version 好像和wheel tags或者上传包的Python版本有关,不会影响Python哪个版本可以下载源码包。
PyPI 确实具有 Requires-Python 元数据 Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
(如果可用)。此标签独立于包格式,是 pip 中的一项相对较新的功能,用于控制安装程序是否会尝试在 Python.
的目标版本中安装特定项目
我注意到,大多数在 PyPI 上发布的项目在其项目页面中包含 "Py Version" 元数据,但它们的值各不相同。
如果包不是通用包或不是纯python包,它们的值是可以理解的不同,以表示它们的目标平台,例如nose page and this simplejson page.
但是其他一些通用纯(据我所知)Python 包仍然包含略有不同的内容。例如:
- 搜索 "Py Version" 在此 requests PyPI page 您会找到“2.7”
- 在这个rsa page中你会找到“3.5”
- 在six page中是"py2.py3"
- 在 python-dateutil page 你会看到 "any"
所以我的问题是,它们是由作者用来构建他们的发布包的不同工具链引起的吗?我对 运行 python2 setup.py sdist bdist_wheel --universal upload
的尝试给出了“2.7”Py 版本值。下次我会尝试 python3 ...
然后 twine ...
看看我会得到什么。
更重要的是,这些都重要吗?我前面提到的命令行仍然构建了一个适合其他人在 Python 2 和 Python 3 环境中使用的通用包,不是吗?
任何你看到 2.7
或 3.5
或另一个 Python 版本的列,都是在 Wheels 项目问题跟踪器中设置的 by the bdist_wheel
command, based on the current Python version used to build with, but this is the wrong value. This is bug 102。
这也是 PyPI 项目中的 reported as a bug。对于所有这些项目,它确实应该说 py2.py3
。幸运的是,该专栏中所说的安装轮子的工具并不重要,您仍然有一个通用轮子,它将用于 Python 2 或 Python 3 上的安装。 =27=]
然而,这不是 PyPI 的错,该字段是由执行上传的工具设置的。 file_upload()
XML-RPC handler 从上传器中获取未更改的值并将其插入数据库以供稍后显示。当使用 setuptools upload
时,该值最终来自构建分发文件的代码,因此在这种情况下为 bdist_wheel
。
如果您非常关心自己的项目在那里列出正确的信息,那么我建议您使用 twine
uploader instead; this package extracts the pyversion
field from the wheel filename。在 Py Version 列中设置了 py2.py3
的任何项目都使用该工具进行上传。 Twine 还有许多其他优势,尤其是您可以使用它 安全地 通过 HTTPS 上传文件。
至于 any
值,可以通过在 PyPI 界面中手动上传文件来设置,或者可能是其他工具或 twine
或 setuptools bdist_wheel
的先前版本 I'我不知道。
自从提出这个问题后,PyPI 设计已从项目页面中删除 "Py Version"; Py Version 好像和wheel tags或者上传包的Python版本有关,不会影响Python哪个版本可以下载源码包。
PyPI 确实具有 Requires-Python 元数据 Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
(如果可用)。此标签独立于包格式,是 pip 中的一项相对较新的功能,用于控制安装程序是否会尝试在 Python.