在 setup.py 中包含最小 pip 版本

Include minimum pip version in setup.py

我已经为我的应用程序创建了一个 setup.py。我在 install_requires 中设置的一些依赖项需要 pip 版本 19.3.1 或更高版本。

有没有办法在 setup.py 中检查 pip 版本?并在构建之前升级 pip?

您没有责任在您的项目中针对其他项目的打包问题构建解决方法。这是一种不好的做法。无论如何,作为 setup.py 的一部分执行此操作也没有多大意义,因为在许多情况下,此文件不会在 安装时间 .

期间执行

你能做的最好的事情就是尝试直接修复这些依赖项项目的错误打包:联系维护者、提交问题、提出修复等。

第二好的事情是告知用户您的项目。在您自己的项目的文档中清楚地说明这个问题以及如何防止它(即“安装 pip 版本 19.3.1 或更高版本”)。


更新:

如果您决定强制检查 setup.py,这里有一些技巧可能会有所帮助...

但我仍然反对这些,因为您的 setup.py 实际上并不是这里的错误,但问题似乎出在依赖项的打包上。

1.

__requires__ = ['pip >= 19.3.1']  # make sure it's before 'import setuptools'
import setuptools

setuptools.setup(
    # ...
)

这会触发异常:

pkg_resources.DistributionNotFound: The 'pip>=19.3.1' distribution was not found and is required by the application

此技术的缺点是当从 pip 调用时它不会触发(例如:pip install .),因为在那种情况下 __main__ 模块不是 setup.py 而是 pip.

的一个模块

参考:

2.

import pkg_resources
import setuptools

pkg_resources.require(['pip >= 19.3.1'])

setuptools.setup(
    # ...
)

这会触发 pkg_resources.VersionConflict 异常。

即使从 pip 调用,这也应该有效,但是...

这似乎不适用于 build isolationPEP 517pyproject.toml),因为在这样的在构建环境中通常根本没有 pip 的情况下。

参考: