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

Posted

技术标签:

【中文标题】如何修复“ImportError:无法导入名称 IncompleteRead”?【英文标题】:How do I fix 'ImportError: cannot import name 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 系统。

我该如何解决这个问题?

【问题讨论】:

可能相关:***.com/questions/27318535/… @cel:这不是重复的,因为它是用于 windows 的,我已经看到了。 已接受答案中的链接指向 ubuntu 的问题跟踪器 - 所以这个问题似乎不是特定于 Windows 的。您是否尝试按照OP 的建议重新安装python? @cel 没关系,我只是找到了一个非常简单的解决方案。 ...这是什么? 【参考方案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】:

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

https://packages.debian.org/fr/stretch/all/python3-pip/download https://packages.debian.org/fr/stretch/all/python-pip-whl/download

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

dpkg -i *.deb

【讨论】:

【参考方案5】:
    sudo apt-get remove python-pip sudo easy_install requests==2.3.0 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来破坏您的系统。

以上是关于如何修复“ImportError:无法导入名称 IncompleteRead”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统