如何解决Python 打包多次发布后指定python版本要求
我在 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.0,带有
python_requires=">=2.7,<3.6"
,另一种是 3.0.0 版本为 3.1.1,带有python_requires=">=3.6"
有更好的方法吗?
解决方法
PyPI 有一个相对较新的功能:您可以“猛拉”与 Python 2 不兼容但未在元数据中正确指定的版本。
被移除的版本是一个总是被安装程序忽略的版本,除非它是唯一与版本说明符匹配的版本(使用 ==
或 ===
)。
有关详细信息,请参阅 PEP 592 -- Adding "Yank" Support to the Simple API。事实上,您所描述的是 PEP 的 motivation 部分中描述的主要场景。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。