【问题标题】:Python packages hash not matching whilst installing using pip使用 pip 安装时 Python 包哈希不匹配
【发布时间】:2017-03-04 03:30:59
【问题描述】:

我正在使用 pip 安装我的所有 python 包,但出现错误,如下面的跟踪所示。有什么问题,我该如何解决?

usr@comp:~$ pip install flask
    Collecting flask
      Using cached Flask-0.11.1-py2.py3-none-any.whl
    Collecting itsdangerous>=0.21 (from flask)
      Using cached itsdangerous-0.24.tar.gz
    Collecting click>=2.0 (from flask)
      Using cached click-6.6.tar.gz
    Collecting Werkzeug>=0.7 (from flask)
      Using cached Werkzeug-0.11.11-py2.py3-none-any.whl
    Requirement already satisfied (use --upgrade to upgrade): Jinja2>=2.4 in /usr/lib/python2.7/dist-packages (from flask)
    Requirement already satisfied (use --upgrade to upgrade): MarkupSafe in /usr/lib/python2.7/dist-packages (from Jinja2>=2.4->flask)
    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.
        Werkzeug>=0.7 from https://pypi.python.org/packages/a9/5e/41f791a3f380ec50f2c4c3ef1399d9ffce6b4fe9a7f305222f014cf4fe83/Werkzeug-0.11.11-py2.py3-none-any.whl#md5=c63a21eedce9504d223ed89358c4bdc9 (from flask):
        Expected md5 c63a21eedce9504d223ed89358c4bdc9
             Got        13a168aafcc43354b6c79ef44bb0dc71

【问题讨论】:

  • 您在使用需求文件吗?此错误表明您正在使用 pip 的哈希检查模式,并且可能正在尝试升级软件包的版本而不先升级哈希。
  • 不,我没有明确使用需求文件,但 pip 正在使用其(flask)需求文件检查 flaks 的依赖关系。如何进行哈希升级?
  • 感谢您的评论 jonafato,我找到了 2013 年的一个问题,该问题的解决方案对我有用。解决方案在下面的答案中
  • this page查看我的答案..

标签: python pip


【解决方案1】:

从 2013 年开始有一个类似的问题 (Why does pip fail with bad md5 hash for package?),我尝试过的对我有用的解决方案是这样的:

sudo pip install --no-cache-dir flask

由 attolee 提供

【讨论】:

    【解决方案2】:

    --no-cache-dir 起初在树莓派 4 中对我不起作用。

    发现问题是由于pip安装过程中出现意外的网络变化/故障

    我不得不使用wget手动下载损坏的.whl文件

    并像下面这样安装它: sudo pip install scipy-1.3.0-cp37-cp37m-linux_armv7l.whl

    紧随其后 sudo pip install --no-cache-dir keras

    然后它起作用了。

    【讨论】:

    • 使用--no-cache-dir 对我不起作用。这做到了!但不确定真正的问题是什么。感谢您的指导。
    • 这也解决了我在树莓零上的问题!不过,sudo 通常不需要。
    【解决方案3】:

    您需要将您的 pip 升级到较新的版本:

    使用这个命令:

    python -m pip install -upgrade pip
    

    适用于 Mac/Linux 操作系统并使用

    python -m pip install --upgrade tensorflow
    

    让 Windows 更新您的 pip。然后运行你的命令

     pip install flask
    

    【讨论】:

      【解决方案4】:

      我在安装 panads 时遇到错误

      您需要删除缓存并重新安装。

      pip install --no-cache-dir flask
      

      【讨论】:

      • 这个答案是 3 年前提出的。您应该删除它,它不会增加任何新内容。
      • 我在构建 docker 映像时遇到了这个问题.. 这是否适用于 requriement.txt
      【解决方案5】:

      好像是缓存问题,缓存的包和REQUIREMENTS不一样。

      可能是上次更新中断造成的。

      我这样做解决了我的问题:

      rm ~/.cache/pip -rf
      

      【讨论】:

        【解决方案6】:

        只需使用您计算的下载文件的哈希值验证指定包的已发布哈希值,即可明确解决方案。

        如果它们匹配 - 那么 pip 安装可能已损坏下载。 如果它们不匹配 - 那么在发布包时散列未正确发布 - 或者 - 篡改下载文件的人错过了更新 md5 散列。

        感谢 pip 具有适当的下载卫生。绝大多数计算机用户从不比较他们下载和安装的软件的哈希值。

        【讨论】:

          【解决方案7】:

          我在不同的模块中遇到了类似的问题。它是由网络故障引起的。我的修复并不复杂,只是再次尝试安装它并且成功了。

          【讨论】:

          • 是的,我遇到了同样的问题,通过更改网络类型,它解决了。
          【解决方案8】:

          首先,尝试升级你的 pip 然后安装库

          python -m pip install -upgrade pip

          如果它不起作用,请尝试在没有现金的情况下安装它

          pip install --no-cache-dir the_library_name

          【讨论】:

            【解决方案9】:

            这里的问题是 Python 包更新了新的哈希值,而 pip 尝试使用缓存在 pip 缓存目录中的旧哈希值安装 Python 包。在 pip install 尝试之前需要清除此缓存。所以完整的解决方案是:

            python -m pip cache purge
            python -m pip install <package>
            

            【讨论】:

              【解决方案10】:

              也许 pipiserver(您从哪里安装 pip)上传一个 pkg,例如 flask-1.0.0.tar.gz,如果新的 pkg 代码已更改,则 rm 正在上传一个新的 flask-1.0.0.tag.gz,哈希必须不同,有两种方法:

              1. 安装较旧的 pkg 版本 =, pip install flask==0.0.9
              2. 等待新的 pkg 发布 flask==1.0.1 或缓存到期。

              【讨论】:

                【解决方案11】:

                如果您在使用 pipenv 时遇到此错误,请尝试

                $ pipenv --clear
                $ pipenv lock
                $ pipenv install
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2019-02-23
                  • 2020-12-13
                  • 1970-01-01
                  • 2023-03-18
                  • 1970-01-01
                  • 2020-01-27
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多