如何修复“ImportError:无法导入名称 IncompleteRead”?
Posted
技术标签:
【中文标题】如何修复“ImportError:无法导入名称 IncompleteRead”?【英文标题】:How do I fix 'ImportError: cannot import name IncompleteRead'? 【发布时间】:2015-02-05 02:37:14 【问题描述】:当我尝试使用 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'
我有一个 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-requests
和 python3-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
来修复它,所以我必须显式运行pip2
或pip3
。
在 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”?的主要内容,如果未能解决你的问题,请参考以下文章