【发布时间】:2021-01-01 08:44:33
【问题描述】:
我的包在依赖项中有 setuptools。我试图在安装我的包时限制 setuptools 的版本。 该软件包在 setup.py 中有以下限制:
setup(
setup_requires=[
'setuptools==50.2.0',
'pip>=19,!=20.0,!=20.0.1,<21'
],
...
在pyproject.toml中也有同样的限制:
[build-system]
requires = ["setuptools==50.2.0", "pip>=19,!=20.0,!=20.0.1,<21", "wheel"] # PEP 508 specifications.
但是,当使用 pip 安装我的包时,它会下载最新的 setuptools 50.3.0。
为什么它忽略了要求?如何让它不安装最新版本?
【问题讨论】:
-
我相信没有用例将
setuptools或pip添加到setup_requires是有意义的,同样,我无法想到将pip添加到build-system.requires的场景有意义的。另一方面,build-system.requires中的setuptools(也许是wheel,但我有疑问)似乎是正确的做法。 -
使用python的环境是这样的:xkcd.com/1987,你可以用多种方式做一件事,这取决于你的出发点是什么。将
pip添加到需求中可能没有多大意义,但我可以看到一些系统没有开箱即用的setuptools(尤其是旧的Python 版本) -
你能分享一下你的包的其余部分吗,具体来说你的
install_requires是什么? -
@AnthonySottile,
install_requires=['cryptography>=2.4.2,<3', 'click>=7.0,<8', 'intelhex>=2.2.1,<3', 'python-jose>=3.0.1,<4', 'jsonschema>=3.0.0,<4', 'pyocd==0.27.3', 'cbor==1.0.0', 'imgtool==1.7.0a1'], -
好的。但这就是@rite2hhh 在他的回答中已经说过一段时间了:版本在范围内。现在修正了版本范围(固定到单个版本号),Anthony Sottile 提出了一点,即存在 build-time 和 run-time 依赖项.您的问题只是关于 build 依赖项(仅限制那些),与 install 无关。 -- 所以问题仍然是你关心“它下载最新的setuptools 50.3.0”?您是否关心 build-time 或 run-time?
标签: python pip setuptools setup.py pyproject.toml