如何指定具有依赖项规范的最低pip版本



PEP 508描述了如何为依赖项设置附加规范。例如,这可以用于指定依赖项只能安装在Linux系统上。

有没有任何方法可以使用此语法来指定包的最小pip版本?

我的用例:一个依赖项是用manylinux2010构建的,需要pip>=19.0.我希望在pip>=19.0,否则忽略。这与setup.py中的Include minimum pip版本不同,在setup.py中,作者希望为整个项目限制pip版本。

谢谢!

你可以在setup.py:中进行这样一次丑陋的破解

import pkg_resources
import setuptools
install_requires = [
# ...
]
try:
pip_dist = pkg_resources.get_distribution('pip')
except:
pass
else:
if pip_dist.parsed_version > pkg_resources.parse_version('19'):
install_requires.append('Library')
setuptools.setup(
# ...
install_requires=install_requires,
)

这是我脑海中的想法(伪代码(,未经测试,很可能需要调整。

我绝对不建议这样做,这有很多危险信号,违背了许多最佳实践建议。

最重要的是,一旦涉及构建隔离,或者从轮子安装(轮子不包含setup.py文件(,就不会遵守pip版本号的条件。

在setup.py中,在执行任何操作之前添加以下代码段。

代码:

import pip
if pip.__version__ < '19':
raise RuntimeError('Required pip>=19.0 to install')
import spam
import foo
...
...
setup(...)

这将检查pip依赖关系是否得到维护。

最新更新