pip:这些包与需求文件中的哈希值不匹配

Dog*_*ace 8 python pip

当我尝试使用 pip install 安装库时,有时会出现此错误消息。

ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 docker-compose V2 构建多个映像时,会出现此错误。

我做了什么:

  1. pip install --no-cache-dir -r requirements.txt
  2. 升级点
  3. 尝试旧版本的 pip (20.0.2)。
  4. 更改受影响的包的版本。
  5. 更改DNS

然而,它仍然是随机出现的。错误消息引用的库也在不断变化。

有谁知道这个问题的原因?

小智 1

这是 pips 集成的检查机制,可以自动检查下载包的完整性。

您可以自己检查(通过单击 has 列中的视图)从 pypi 加载的 whl 文件的 sha256 应该是这样的:

7a2c93be4f874fd42541a1330218d2094015993420bf0bd8fbf19c88e6b49c6a
Run Code Online (Sandbox Code Playgroud)

但例如你的错误表明你得到了这个:

g4dd3fb13afd095a21c7dfd0d2f9bd0a3593c3c78e81ca2f475429490752e7b8
Run Code Online (Sandbox Code Playgroud)

所以pip(出于安全原因)不为您安装该软件包。我建议:

  • 检查是否从系统上的某个目录中pip获取了错误下载的文件 - 如果是,请尝试将其删除whltmpwhl
  • 检查是否可以毫无问题地安装其他软件包
  • 尝试手动下载该whl文件,然后检查输出pip hash <whl file>(如果它与g4dd3fb13af...sha 匹配)以及是否可以执行pip install <whl file>

另外,我也遇到了类似的问题,我尝试了一下,它有效:

sudo pip install --no-cache-dir `YOUR_PACKAGE_NAME`
Run Code Online (Sandbox Code Playgroud)

  • [pip shop不能盲目与sudo一起使用](https://askubuntu.com/questions/802544/is-sudo-pip-install-still-a-broken-practice) (6认同)