Python 包装。指定多次发布后的python版本要求

标签 python pip setuptools pypi

我在 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 呢? (没有 pip install package==2.4.0 的先验知识 - 类似于使用 pip 的回溯机制)

如果我指定指令 python_requires=">=3.6"在版本 3.1.0 中,pip 将回溯到版本 3.0.0 安装包,该安装包将不起作用。

我能想到:

  1. cx_Oracle way 。如果最低版本与安装所需的版本不匹配,则在 setup.py 中引发异常,并指定如何安装正确的版本。

  2. 创建 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了解更多信息。其实你描述的就是motivation中描述的主要场景。 PEP 部分。

关于Python 包装。指定多次发布后的python版本要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68008348/

相关文章:

python - 为 Pandas 初始化全真 bool 索引

python - Python 包安装程序 exe 如何工作?

python - 如何在 Ubuntu 上正确安装多个非软件包 Distribute/virtualenv/pip 生态系统?

python - setup.py 中的入口 pip

python - requirements.txt 文件中 `=` 后面的值是什么意思?

python - 如何从源代码使用 pbr 版本?

python - 使用生成步骤打包 Web 应用程序的 pythonic 方法是什么?

android - 为我的 kivy app python 设置一个数字键盘

python - 将 pandas 数据框中的多行合并为一行?

Python队列和线程混淆