放弃对旧版python的支持

标准支持删除对旧版python的支持 核心元数据规范 1.2通过“requires python”属性进行规范。

元数据1.2+客户端(如PIP9.0+)将通过匹配当前的python运行时并将其与包元数据中所需的版本进行比较,从而遵守此规范。如果它们不匹配,它将尝试安装支持该python运行时的最后一个包分发。

通过修改包元数据中的“requires python”属性,可以使用此机制删除对旧版本python的支持。

本指南专门针对 setuptools ,其他包装工具,如 flit 可能提供类似的功能,但用户需要查阅相关文档。

要求

此工作流要求:

  1. 发布者正在使用最新版本的 setuptools

  2. 最新版本的 twine 用于上传包,

  3. 安装软件包的用户至少有PIP9.0,或支持元数据1.2规范的客户端。

定义所需的python版本

1。下载最新版本的安装工具

确保在生成源分发版或二进制分发版之前,先更新安装工具并安装捆绳。

步骤:

pip install--upgrade setuptools twine

setuptools 版本应高于24.0.0。

2。为支持的python发行版指定版本范围

您可以指定版本范围和排除规则,如至少python 3。或者,python 2.7、3.4及更高版本。

实例:

Requires-Python: ">=3"
Requires-Python: ">2.7,!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

设置这些值的方法在调用 setup 在setup.py脚本中。这将根据您在中提供的参数插入所需的python元数据值。 python_requires .

from setuptools import setup


setup(
    # Your setup arguments
    python_requires='>=2.7',  # Your supported Python ranges
)

三。发布前验证元数据

在python源包(您下载的zip或tar gz文件)中有一个名为pkg-info的文本文件。

此文件由distutils或 setuptools 当它生成源包时。该文件包含一组键和值,键列表是Pypa标准元数据格式的一部分。

您可以看到生成文件的内容,如下所示:

tar xfO dist/my-package-1.0.0.tar.gz my-package-1.0.0/PKG-INFO

在发布包之前,请验证以下各项是否到位:

  • 如果升级正确,元数据版本值应为1.2或更高。

  • Requires python字段已设置,并与setup.py中的规范匹配。

4。使用捆绳发布

绳线有许多优点,除了速度更快之外,它现在是发布包的支持方法。

确保使用的是最新版本的捆绳,至少为1.9。

删除python版本

一旦您发布了一个包含requires-python元数据的包,就可以进行进一步的更新,将该python运行时从支持中删除。

必须按此顺序执行,以使自动故障恢复工作。

例如,您发布了RequiresPython:“>=2.7”作为包的版本1.0.0。

如果要将版本字符串更新为“>=3.5”,并发布包的新版本2.0.0,则从版本2.7运行PIP 9.0+的任何用户都将安装包的版本1.0.0,并且任何大于等于3.5的用户都将收到版本2.0.0。