【问题标题】:How do I fix 'ImportError: cannot import name IncompleteRead'?如何修复“ImportError:无法导入名称 IncompleteRead”?
【发布时间】:2015-02-05 02:37:14
【问题描述】:

当我尝试使用 pippip3 安装任何东西时,我得到:

$ sudo pip3 install python3-tk
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip3')()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 356, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2476, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2190, in load
    ['__name__'])
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 61, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python3/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python3/dist-packages/pip/download.py", line 25, in <module>
    from requests.compat import IncompleteRead
ImportError: cannot import name 'IncompleteRead'

我有一个 Ubuntu 14.10 系统。

我该如何解决这个问题?

【问题讨论】:

  • @cel:这不是重复的,因为它是用于 windows 的,我已经看到了。
  • 已接受答案中的链接指向 ubuntu 的问题跟踪器 - 所以这个问题似乎不是特定于 Windows 的。您是否尝试按照OP 的建议重新安装python?
  • @cel 没关系,我只是找到了一个非常简单的解决方案。
  • ...这是什么?

标签: python pip


【解决方案1】:

我尝试了每个答案,但都无法做到。

这样做并成功了

sudo apt-get purge python-virtualenv
sudo pip install pip -U

之后我只是用 pip 安装了 virtualenv

sudo pip install virtualenv

我构建了我正在开发的 virtualenv,并且 该软件包很容易安装。 使用 source /bin/activate 进入 virtualenv 并尝试安装您的软件包,例如:

pip install terminado

它对我有用,虽然我使用的是 python2.7 而不是 python3

【讨论】:

    【解决方案2】:

    对于 CentOS,我使用了这个并且它有效,请使用以下命令:

    sudo pip uninstall requests
    sudo pip uninstall urllib3
    sudo yum remove python-urllib3
    sudo yum remove python-requests
    

    (确认所有这些库已被删除)

    sudo yum install python-urllib3
    sudo yum install python-requests
    

    【讨论】:

      【解决方案3】:

      只需运行 easy_install -U pip 即可解决我的问题。

      【讨论】:

      • 老老实实发表评论以表达我的惊讶,我不得不通过一系列人 apt-get 清除各种软件才能找到这个非常简单、有用的解决方案。不确定提出问题时有哪些限制,但这可行
      【解决方案4】:

      您可以从这些页面手动下载最近的软件包:

      然后,通过运行dpkg 来安装它:

      dpkg -i *.deb
      

      【讨论】:

        【解决方案5】:
        1. sudo apt-get remove python-pip
        2. sudo easy_install requests==2.3.0
        3. sudo apt-get install python-pip

        【讨论】:

          【解决方案6】:

          虽然this previous answer 可能是原因,但这个片段对我来说是一种解决方案(在Ubuntu 14.04 中):

          首先从包管理器中删除包:

          # apt-get remove python-pip
          

          然后并排安装最新版本:

          # easy_install pip
          

          (感谢@Aufziehvogel,@JunchaoGu)

          【讨论】:

          • 感兴趣的:--upgrade (-U):强制升级(搜索 PyPI 的最新版本)
          • 您只需要小心,不要在通过easy_install 安装时混淆您的本机包管理器 (apt)。如果可能的话,我会推荐apt-get remove pip 然后easy_install pip
          • @Aufziehvogel apt-get remove python-pip
          • 基本上这个答案让情况变得更糟。
          • 对我来说,这是“apt-get remove python3-pip”,然后是“apt-get install python3-setuptools”,然后是“easy_install3 pip”
          【解决方案7】:

          在 Windows 中,这可以在管理提示符下工作:

          • 删除C:\Python27\Lib\site-packages\requests*
          • easy_install requests==2.3
          • pip install --upgrade pip
          • pip install --upgrade requests

          【讨论】:

          • 已安装/重新安装 python-requestspython3-requests 修复了 pip3。犯了安装python3.6beta然后python3.6rc的错误。
          【解决方案8】:

          检查任何终端窗口中是否有一个 python 解释器。如果是这样,请杀死它并尝试对我有用的sudo pip

          【讨论】:

            【解决方案9】:

            用于修复 pip3(在 Ubuntu 14.10 上工作):

            easy_install3 -U pip
            

            【讨论】:

            • 这也适用于 Ubuntu 14.04。请注意,这会安装一个用于 Python3 的 /usr/local/bin/pip;以前 pip 运行 Python 2 版本。我通过完全禁用/usr/local/bin/pip 来修复它,所以我必须显式运行pip2pip3
            • 在 Debian Jessie 上为 python2.7 - 在使用 sudo apt-get purge python-requests 清除 pip 并使用 apt-get 重新安装(显示在另一个答案中)之后,运行 easy_install -U pip 就可以了。
            • 为了我自己比什么都重要;这是对我有用的修复程序。
            • 像魅力一样工作!
            【解决方案10】:

            或者你可以删除所有requests

            例如:

            • rm -rf /usr/local/lib/python2.7/dist-packages/requests*

            【讨论】:

            • 这对我有用。我可以知道请求与安装 python-pip 的关系是什么
            • 如果您查看requests 模块,您将看到该模块/lib 用于发送HTTP 请求。 pip module需要requests module to download packages from ` Python Package Index. And the requests`被你删除有另一个版本pip需要安装。
            • 这对我也有用;我在运行使用 pip 模块在全新/新安装的 Raspbian Jessie(用于 Raspberry Pi)上安装依赖项的 Ansible 剧本时遇到了错误。删除 requests dist 包后,一切正常。
            • 也为我工作。我将我的操作系统从 wheezy 升级到了 jessie,所以可能坏了一些东西。上述三种方法首先对我不起作用。但是,如果我使用方法 3,然后使用 rm -rf 命令,我发现它确实有效。
            • 这完成了工作,同时仍然保留了来自 debian repo 的 pip。非常感谢!
            【解决方案11】:

            这应该适合你。遵循这些简单的步骤。

            首先,我们把已经安装好的pip去掉,这样就不会报错了。

            打开终端。

            类型:sudo apt-get remove python-pip

            它会删除已安装的 pip。

            方法一

            步骤:1 sudo easy_install -U pip

            它将安装 pip 最新版本。

            并且会返回它的地址:Installed /usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg

            方法二

            步骤:1转到此link

            步骤:2右击>>另存为..名称为get-pip.py。

            步骤:3 使用:cd 转到与您的 get-pip.py 文件相同的目录

            步骤:4使用:sudo python get-pip.py

            它将安装 pip 最新版本。

            方法3

            步骤:1使用:sudo apt-get install python-pip

            它将安装 pip 最新版本。

            【讨论】:

            • 您能否在答案中添加更多细节?
            • 当然。但是你在哪里弄糊涂了?
            • 感谢我删除了 python-pip,然后使用了 easy_install。 pip 又开始工作了。
            • @phansen 没问题 (y)
            【解决方案12】:

            我在 ubuntu 上的 pip 版本建议:

              pip install --upgrade pip
            

            【讨论】:

            • 对我不起作用,因为 pip 完全被这个错误所困扰。任何用法(甚至是pip --version)都会显示cannot import name IncompleteRead 错误,因此pip 很遗憾无法自行升级
            • 实际上这适用于 Ubuntu 14.04 的全新安装(从minbase 引导)。不知何故,pip 设法在不引用 requests 模块的情况下自行更新。
            • 这不适用于一个坏点——一个先有鸡还是先有蛋的困境。
            【解决方案13】:

            检查您的~/.local/lib/python2.7/site-packages/ 中是否有旧版本的requests,如果是,请将其删除(更改路径以反映您的python 版本)。这为我解决了这个问题。

            【讨论】:

              【解决方案14】:

              在 Ubuntu 14.04 上,我使用 pip 安装引导脚本解决了这个问题,如 the documentation 中所述

              wget https://bootstrap.pypa.io/get-pip.py
              sudo python get-pip.py
              

              这对于开发环境来说是一个不错的解决方案。

              【讨论】:

              • 这解决了这个问题。太糟糕了,这样的问题在 LTS 版本上仍然存在。
              • 我在 Ubuntu 15 中遇到了这个问题,它似乎可以正常工作。 get-pip.py 脚本说我已经有了我正在寻找的包,但建议我使用带有 -H 标志的 sudo,我相信它是有效的。
              【解决方案15】:

              这个问题是由于你的 pip 安装和你的 requests 安装不匹配造成的。

              截至请求版本 2.4.0 requests.compat.IncompleteRead has been removed。旧版本的 pip,例如from July 2014,仍然依赖于IncompleteRead。在pip的current version中,去掉了IncompleteRead的导入。

              所以要责备的是:

              • 请求,用于过快地删除公共 API
              • Ubuntu 更新 pip 太慢

              您可以通过 Ubuntu 更新 pip(如果有较新版本)或在 Ubuntu 之外安装 pip 来解决此问题。

              【讨论】:

              • pip install requests -U,解决了这个问题。
              • @jonincanada 当 pip 崩溃时我应该如何运行 pip 命令?
              【解决方案16】:

              问题在于 Python 模块 requests。可以修复

              $ sudo apt-get purge python-requests
              [now requests and pip gets deinstalled]
              $ sudo apt-get install python-requests python-pip
              

              如果您在使用 Python 3 时遇到此问题,则必须编写 python3 而不是 python

              【讨论】:

              • 这绝对是一个不错的解决方案。
              • 很高兴知道purge。这仍然没有安装 pip 的工作版本,当我尝试在 python CLI 中运行 from requests.compat import IncompleteRead 时,它给出了相同的错误。运行上述命令后,DID 的工作是运行easy_install -U pip
              • 这是最好的解决方案,不涉及easy_install,并且不会通过先删除pip来破坏您的系统。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-12-08
              • 2019-11-27
              • 2019-12-19
              • 1970-01-01
              • 2019-12-30
              相关资源
              最近更新 更多