pip:没有名为_internal的模块。

197

我在尝试使用pip时遇到了问题。我正在使用Ubuntu 16.04.4

我应该说我以前已经使用过它,从来没有出现过任何问题,但是从今天开始,无论我使用任何命令,都会出现相同的错误(例如使用 pip --upgrade )。

<code>Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal import main
ImportError: No module named _internal
</code>

我尝试过执行 sudo apt-get remove python-pip 再执行 sudo apt-get install python-pip,但是没有任何改变。


请确保在您的 $PATH/usr/local/lib/pythonX.X/site-packages 位于 /usr/lib/pythonX.X/site-packages 之前。 - hoefling
这里有同样的问题。你找到解决方案了吗? - WayBehind
6
@WayBehind 我找到了解决方法。我注意到使用 python -m pip 一切都正常工作。此外,我删除了文件 /usr/local/bin/pip,现在调用 pip -V 返回的是 pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)。一切似乎都按预期工作。 - Grimdrem
我仍然有同样的问题,我正在conda环境中使用pip,Python 2.7,并且我正在使用pip install ipdb。对此有任何想法吗? - Garvita Tiwari
1
按照以下步骤加上-H标志: sudo -H python3.7 get-pip.py --force-reinstall - Andre Leon Rangel
33个回答

223

这对我起了作用:

python -m pip install --upgrade pip

环境:OSX和Python已通过brew安装。


8
谢谢,这对我来说是使用Python3的解决方案。 - Furbeenator
2
这对我没有用。我最终做的是像@Grimdrem一样。我曾经使用sudo或其他方式为所有人安装了pip,我的升级是使用--user,所以其他安装仍然存在...从/usr/local/bin和我的主要Python包文件夹(不是--user的)中删除它就可以了。 - user1269942
奇怪的是,这也在这里解决了。我要升级#searx到最新提交。 - Roland
这在Ubuntu上也可以工作。 - kittu
如果您的系统还存在Python2,那么您需要使用python3 -m pip install --upgrade pip来进行更新。 - Dale C. Anderson
显示剩余2条评论

88

来自askUbuntu的答案有效。

对于pip2.7,您可以首先使用curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py命令下载pip安装程序,然后运行python2.7 get-pip.py --force-reinstall重新安装pip。

问题已解决。 对于Python3也适用。


9
对我来说这行不通,我已经尝试过几次了。 - Cleve Green
1
我通过重新安装Python来解决了这个问题,但是非常痛苦,因为我失去了以前的所有模块。 - Cleve Green
刚刚遇到了这个问题,似乎在16.04.4上apt-get install python-pip无法正常工作,需要使用二进制安装程序来解决? - Joe
1
为了使其正常工作,我不得不删除所有系统级别的pip组件:apt-get remove python-pip-whl - Jan
"权限被拒绝。您可能需要使用sudo命令。大多数发行版不允许普通用户在系统范围内安装pip。" - Cerin

74

这个解决方案对我起作用:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall

或者使用 sudo 以获取提升的权限 (sudo python3 get-pip.py --force-reinstall)。

当然,您也可以使用 python 而不是 python3 ;)

来源


1
这对我修复了venv中的损坏安装。 - Colin 't Hart
get-pip.py尝试从互联网下载文件。如果您要恢复pip的机器没有互联网访问权限,该怎么办? - einpoklum

38

您正在使用python 2还是python 3?以下命令可能不同!

  1. 运行python3 -m pip --version,查看是否安装了pip。
  2. 如果已安装,请运行python3 -m pip install --upgrade pip
  3. 如果未安装,请运行sudo apt-get install python3-pip,然后重复操作。

前两步解决了我在搭载M1芯片的macOS上遇到的这个问题... - Nirmal
第三步在我的 Ubuntu 20.04.3 上有效。 - Faris Marouane

22

请参考此问题列表

sudo easy_install pip

在 Mac OS 上对我有效。

对于python3,可以尝试 sudo easy_install-3.x pip,具体取决于 python 3.x 版本。或者使用 python3 -m pip install --user --upgrade pip


1
这是旧的Python2版本。在Python3 Ubuntu上,至少您还应该运行sudo easy_install-3.4 pip或类似命令。 - NoBugs
这对我很有帮助,当我需要在MacOS上将pip 20.2.3升级到pip 21.0时。谢谢! - Alex L

20

这个问题可能是由于普通用户没有访问包py文件的特权。
1. root用户可以运行'pip list'
2. 其他普通用户不能运行'pip list'

[~]$ pip list
Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in <module>
from pip._internal import main
ImportError: No module named pip._internal

检查 pip py 文件权限。

[root@]# ll /usr/lib/python2.7/site-packages/pip/  
合計 24  
-rw-------  1 root root   24  6月  7 16:57 __init__.py  
-rw-------  1 root root  163  6月  7 16:57 __init__.pyc  
-rw-------  1 root root  629  6月  7 16:57 __main__.py  
-rw-------  1 root root  510  6月  7 16:57 __main__.pyc  
drwx------  8 root root 4096  6月  7 16:57 _internal  
drwx------ 18 root root 4096  6月  7 16:57 _vendor  

解决方案:以 root 用户登录并运行

chmod -R 755 /usr/lib/python2.7 

解决这个问题。


1
最终有一个合乎逻辑的解释,说明问题实际上是什么。重新安装可能会解决问题,但这正是它一开始无法工作的真正原因。 - Maxime
谢谢。在我们的情况下,这是一个权限问题。 - Aakash Mohan
2
注意:请注意错误中的Python路径。在我的情况下,它是RHEL 7上的“/usr/local/lib/python3.6/”。 - Enbugger
我觉得你不想把所有的文本文件都设为可执行文件... - einpoklum

17

在文件"/usr/local/bin/pip"中,from pip._internal import main 更改为from pip import main


2
这对于我的Python2.7和相应的pip2.7有效,其他回答此问题的方法适用于使用pip与Python3。 - AcademicDialysis

13

为了完整性,我刚遇到了这个问题,它出现在“Ubuntu 最新版”... v18.04 ...,并通过以下方式修复:

python3 -m pip install --upgrade pip

(请注意需要指定 python3 ,因为这会引用 Python 3.6.9。同一系统上的 python 命令引用 Python 2.7.17。由于这显然是一个系统范围内的安装,它遇到了一个 ["not sudo" ...] 权限错误,但无关紧要,因为这本来就是做错事情。 我遇到了使用 pip3 时的问题。)


我在你的命令中遇到了“no such option: --upgrade”的错误 - 所以我运行了“python3 -m pip install pip”,然后它就起作用了 :) - xeruf

7
我曾经遇到过这个问题,当时 PYTHONPATH 被设置为包含内置的 site-packages 目录。由于 Python 自动查找该目录,因此这是不必要的并且可以删除。

2
这对我有用,谢谢。我只是把 $ PYTHONPATH 保存在某个地方,然后运行 export PYTHONPATH =“” 让pip工作。 - ibowman
但是当尝试打印 $PYTHONPATH 时,site-packages 没有被包括进去。 - alyssaeliyah
在一个使用模块管理软件包的系统上构建虚拟环境时,我遇到了这个问题。当我加载你所说的“module load python/3.5.2”时,它会预先设置你的PYTHONPATH。然后当我激活我的虚拟环境时,它从未取消设置我的PYTHONPATH,这意味着它找到了系统级别的pip而不是我虚拟环境中的pip - irritable_phd_syndrome

7
我尝试了以下命令来解决这个问题,它对我有用:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall

更新pip到最新版本:“curl https://bootstrap.pypa.io/pip/3.5/get-pip.py -o get-pip.py” 并安装它:“py get-pip.py --force-reinstall”。 - Eng_Farghly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接