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依赖关系是否得到维护。