如何修复'ImportError:无法导入名称IncompleteRead'?

Mar*_*oma 285 python pip

当我尝试用pip或安装任何东西时pip3,我得到:

$ 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'
Run Code Online (Sandbox Code Playgroud)

我有一个Ubuntu 14.10系统.

我该如何解决这个问题?

tho*_*ork 433

虽然之前的答案可能是原因,但这个剪辑对我来说是一个解决方案(in Ubuntu 14.04):

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

# apt-get remove python-pip
Run Code Online (Sandbox Code Playgroud)

然后安装最新版本:

# easy_install pip
Run Code Online (Sandbox Code Playgroud)

(感谢@Aufziehvogel,@ JunchaoGu)

  • @Aufziehvogel`apt-get remove python-pip` (16认同)
  • 你必须要小心,不要混淆你的本地包管理器(apt)并通过`easy_install`进行安装.如果可能的话,我建议`apt-get remove pip`然后`easy_install pip`. (11认同)
  • 感兴趣的是:` - upgrade(-U)​​`:强制升级(在PyPI中搜索最新版本) (10认同)
  • 基本上这个答案使情况更糟. (7认同)
  • 对我来说,这是'apt-get remove python3-pip',然后是'apt-get install python3-setuptools',然后是'easy_install3 pip' (7认同)
  • 对于debian用户,您可能希望将pip复制到usr bin文件夹:cp/usr/local/bin/pip/usr/bin / (2认同)
  • 我不得不做... sudo apt-get删除python-pip,sudo apt-get update,sudo apt install python-pip.这清除了局面. (2认同)

Auf*_*gel 85

此问题是由您的pip安装与请求安装之间的不匹配引起的.

截至请求版本2.4.0 requests.compat.IncompleteRead 已被删除.较旧版本的pip,例如2014年7月,仍然依赖IncompleteRead.在当前版本的pip中,导入IncompleteRead已被删除.

所以应该责怪的是:

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

你可以通过Ubuntu更新pip(如果有更新的版本)或者从Ubuntu安装pip来解决这个问题.

  • pip安装请求-U,修复了问题. (3认同)
  • @jonincanada pip崩溃时我应该如何运行pip命令? (2认同)

Bra*_*ena 80

为了修复pip3(在Ubuntu 14.10上工作):

easy_install3 -U pip
Run Code Online (Sandbox Code Playgroud)

  • 在Debian`Jessie`上为`python2.7` - 用`sudo apt-get purge python-requests`清除pip并用apt-get重新安装(在另一个答案中显示),运行`easy_install -U pip`就可以了. (3认同)
  • 这也适用于Ubuntu 14.04.请注意,这将安装一个用于Python3的`/ usr/local/bin/pip`; 以前`pip`运行了Python 2版本.我通过完全禁用`/ usr/local/bin/pip`来修复它,所以我必须明确地运行`pip2`或`pip3`. (2认同)

小智 33

或者你可以删除所有requests.

例如:

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


rob*_*rke 23

在Ubuntu 14.04上,我通过使用pip安装引导脚本解决了这个问题,如文档所述

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
Run Code Online (Sandbox Code Playgroud)

这对于开发环境来说是一个很好的解决方案.


Mar*_*oma 17

问题是Python模块requests.它可以修复

$ sudo apt-get purge python-requests
[now requests and pip gets deinstalled]
$ sudo apt-get install python-requests python-pip
Run Code Online (Sandbox Code Playgroud)

如果你有Python 3的这个问题,你必须写python3而不是python.

  • 很清楚知道`purge`.这仍然没有安装pip的工作版本,当我试图在python CLI中运行`from requests.compat import IncompleteRead`时它给出了同样的错误.运行上述命令后,DID的工作原理是运行`easy_install -U pip` (8认同)
  • 这绝对是一个很好的解决方案. (4认同)

kio*_*k46 9

这应该适合你.按照这些简单的步骤.

首先,让我们删除已经安装的pip,这样就不会出现任何错误.

开放式终端.

键入:sudo apt-get remove python-pip

它会删除已安装的pip.

方法1

步骤:1 sudo easy_install -U pip

它将安装pip最新版本.

并将返回其地址:已安装/usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg

要么

方法2

步骤:1转到此链接.

步骤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最新版本.


for*_*een 8

简单的运行easy_install -U pip解决了我的问题

  • 旧评论表达我的惊讶,我不得不通过一个人们的线程 - 清除各种软件,只是为了找到这个非常简单,有用的解决方案.当问到这个问题时,不确定所有限制是什么,但*这有效*. (2认同)

ggl*_*gll 5

请检查是否你有一个旧版本的requests坐在你~/.local/lib/python2.7/site-packages/并删除它,如果它是(以反映您的Python版本的变化路径)的情况下。这为我解决了这个问题。


Pho*_*beB 5

我在ubuntu上的pip版本建议:

  pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用,因为pip完全被这个错误所困扰.任何用法(甚至`pip --version`)都会显示`'无法导入名称IncompleteRead`错误,所以pip很遗憾无法自我升级 (3认同)