我如何修复'ImportError:不能导入名称incompleterread '?

当我尝试用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系统。

我该如何解决这个问题?

334451 次浏览

问题是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

此问题是由pip安装和请求安装之间的不匹配引起的。

作为请求版本2.4.0 requests.compat.IncompleteRead 已被移除。pip的旧版本,例如2014年7月起,仍然依赖于IncompleteRead。在pip的当前版本中,IncompleteRead的导入已被删除。

所以,罪魁祸首要么是:

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

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

虽然之前的答案可能是原因,这个剪辑工作为我作为一个解决方案(在Ubuntu 14.04):

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

# apt-get remove python-pip

然后在旁边安装最新版本:

# easy_install pip

(感谢@Aufziehvogel, @JunchaoGu)

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

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

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

修复pip3(适用于Ubuntu 14.10):

easy_install3 -U pip

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

我在ubuntu上的pip版本建议:

  pip install --upgrade pip

这应该对你有用。遵循以下简单的步骤。

首先,让我们删除已经安装的pip,这样它就不会引起任何错误。

打开终端。

类型:Sudo apt-get remove python-pip

它删除已经安装的pip。

方法1

步骤:1 sudo easy_install -U pip

它将安装pip最新版本。

并将返回其地址:Installed /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最新版本。

或者你可以删除所有requests

例如:

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

我试着回答了所有的问题,但就是答不上来。

这样做就成功了

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

检查在任何终端窗口中是否有活的python解释器。如果是这样,杀死它,并尝试sudo pip为我工作。

在Windows中,这是从一个管理提示符开始的:

  • 删除C:\Python27\Lib\site-packages\requests*
  • easy_install requests==2.3
  • pip install --upgrade pip
  • pip install --upgrade requests
  1. Sudo apt-get remove python-pip
  2. Sudo easy_install requests==2.3.0
  3. Sudo apt-get install python-pip

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

然后,运行dpkg来安装它:

dpkg -i *.deb

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

对于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