执行pip install -r requirements.txt触发--require-hashes模式报错如何解决
错误产生原因
该报错与你升级后的pip 21.2.4版本无关,核心原因如下:
- 你当前使用的依赖声明文件开启了
--require-hashes安全校验模式,该模式要求所有直接依赖、间接依赖都必须使用==精确锁定版本,同时附带对应安装包的哈希校验值,否则会阻断安装。 - 你声明的直接依赖
backports.entry-points-selectable==1.1.0的依赖链上,importlib-metadata没有在requirements文件中被精确锁定版本,不符合哈希模式的校验规则。 - 额外适配问题:你当前使用Python 3.6环境,但报错显示依赖解析读取的是适配Python 3.8的
requirements-38.txt,版本适配错位也会导致间接依赖的版本规则不匹配。
解决方案
可按照优先级选择以下方案解决:
- 修正依赖文件适配问题:如果你使用的是Python 3.6环境,不要使用适配3.8版本的
requirements-38.txt,切换到对应Python 3.6版本的依赖声明文件后重新执行安装命令。 - 手动补全缺失的锁定依赖:在你的requirements.txt中添加适配Python 3.6的
importlib-metadata精确锁定声明,示例如下:
importlib-metadata==4.8.3 --hash=sha256:766abffff765960c276803bd8e18c586e66ab09280d760038394941a935fff99
- 临时关闭哈希校验:如果你不需要哈希校验的安全要求,可以在安装命令中添加参数关闭该模式,命令如下:
pip install -r requirements.txt --no-require-hashes
- 重新导出完整依赖:如果是依赖导出工具生成的声明不全,可以使用
pip freeze或pip-tools等工具重新导出完整的带版本和哈希的依赖声明,确保所有间接依赖都被完整锁定后再执行安装。
内容的提问来源于stack exchange,提问作者WenChun
相关产品推荐
相关产品推荐

