Python 包装。多次发布后指定python版本要求
Python packaging. Specify python version requirements after multiple releases
我在 pypi 上发布了一个包,版本为 3.0.0。
setup.py
从未提及 python_requires
指令。
在 2.5.0 版中有一个更改使包与 python 2 不兼容,直到现在才被注意到。
自 2.5.0 以来,在 pypi 上发布了大量的软件包。
现在,如果我想使用 python2 安装程序包 - pip 将安装最新版本 3.0.0,但无法正常工作。
我需要 pip 来安装版本 2.4.0 - 它没有兼容性问题。但我究竟怎样才能做到这一点? (事先不知道 pip install package==2.4.0 - 类似于使用 pip 的回溯机制)
如果我在版本 3.1.0 中指定指令 python_requires=">=3.6"
pip 将回溯到版本 3.0.0 安装包,这将不起作用。
我能想到:
cx_Oracle way。如果最低版本与安装要求不匹配并指定如何安装正确版本,则在 setup.py 中引发异常。
创建 2 个新版本。一个本质上是 2.4.0 版本为 python_requires=">=2.7,<3.6"
的 3.1.0,另一个是 3.0.0 版本为 python_requires=">=3.6"
的 3.1.1
有没有更好的方法?
PyPI 上有一个相对较新的功能:您可以“提取”与 Python2 不兼容但未在元数据中正确指定的版本。
被抽出的版本是安装程序总是忽略的版本,除非它是唯一与版本说明符匹配的版本(使用 ==
或 ===
)。
请参阅 PEP 的 PEP 592 -- Adding "Yank" Support to the Simple API for more information. In fact, what you've described is the main scenario described in the motivation 部分。
我在 pypi 上发布了一个包,版本为 3.0.0。
setup.py
从未提及 python_requires
指令。
在 2.5.0 版中有一个更改使包与 python 2 不兼容,直到现在才被注意到。
自 2.5.0 以来,在 pypi 上发布了大量的软件包。
现在,如果我想使用 python2 安装程序包 - pip 将安装最新版本 3.0.0,但无法正常工作。
我需要 pip 来安装版本 2.4.0 - 它没有兼容性问题。但我究竟怎样才能做到这一点? (事先不知道 pip install package==2.4.0 - 类似于使用 pip 的回溯机制)
如果我在版本 3.1.0 中指定指令 python_requires=">=3.6"
pip 将回溯到版本 3.0.0 安装包,这将不起作用。
我能想到:
cx_Oracle way。如果最低版本与安装要求不匹配并指定如何安装正确版本,则在 setup.py 中引发异常。
创建 2 个新版本。一个本质上是 2.4.0 版本为
的 3.1.1python_requires=">=2.7,<3.6"
的 3.1.0,另一个是 3.0.0 版本为python_requires=">=3.6"
有没有更好的方法?
PyPI 上有一个相对较新的功能:您可以“提取”与 Python2 不兼容但未在元数据中正确指定的版本。
被抽出的版本是安装程序总是忽略的版本,除非它是唯一与版本说明符匹配的版本(使用 ==
或 ===
)。
请参阅 PEP 的 PEP 592 -- Adding "Yank" Support to the Simple API for more information. In fact, what you've described is the main scenario described in the motivation 部分。