Pip出现问题:ImportError: 找不到模块名为'pip._internal'的模块。

运行pippip3的结果如下:
Traceback (most recent call last):
File "/home/myuser/.local/bin/pip", line 7, in <module>
from pip._internal import main
ImportError: No module named 'pip._internal'

我遇到了一些问题,卸载了pip3,但是当我尝试重新安装时,出现了以下错误:
sudo apt-get -y install python3-pip

它确实安装了,但是运行pip或pip3时我得到了相同的错误。
#which pip3
/home/myuser/.local/bin/pip3

2我在从pip 9.0.2升级到pip-10.0.0后遇到了类似的问题。我使用的是Ubuntu 16.04LTS。 - Dave
3你不应该在Ubuntu上升级到pip 10,因为通过apt安装的系统版本被修改成与pip 10不兼容的方式。请参考https://github.com/pypa/pip/issues/5221 @Dave - Byte Commander
macOS 10.13.4,升级到pip 10后仍然存在同样的问题。 - Benjamin R
3临时解决方法:python3 -m pip install --user <package> - Benjamin R
1如果你有easy_install(来自python-setuptools软件包),你可以执行sudo easy_install pip(或者对于仅支持Python3的情况,执行sudo easy_install3 pip等)。 - Marek Sebera
你最初是如何安装Pip的?这不可能通过软件包管理器完成,因为那样做不会在~/.local/bin下生成可执行文件。 - David Foerster
尝试简单地重新启动机器可能会解决问题;如果你不会丢失任何工作,那么在重新安装之前可以先尝试这个方法。 - olisteadman
还不能在这里回答,但我之前遇到了同样的问题,可能是pip安装时混合使用了apt和非apt。我清除了路径上的二进制文件并通过apt重新安装,问题解决了。 - Frans
请访问以下链接:https://github.com/pypa/pip/issues/5373 上述链接中的解决方案是,在使用virtualenv之前: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py --force-reinstall 我还卸载了最新的virtualenv并安装了sudo pip install virtualenv==15.1.0 - Ganesh S
我在Docker多阶段构建中遇到了这个问题,当时我不小心尝试在一个使用Python 2的阶段中运行一个使用Python 3安装的pip版本。 - esmail
请查看我的回答(在https://stackoverflow.com/questions/18363022/importerror-no-module-named-pip/66956587#66956587中使用`python -m ...而不是python3 -m ...`)。 - Victoria Stuart
在Debian上,sudo apt install --reinstall python3-pip python-pip 命令解决了我的问题。 - ndvo
8个回答

升级pip(或者在这种情况下是pip3)之后,如果出现以下情况:
$ ~ pip3 -V
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal import main
ModuleNotFoundError: No module named 'pip._internal'

强制重新安装pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall

验证安装:
$ ~ pip3 -V
pip 10.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

现在,pip3 install <package>pip3 install --user <package>(用于用户级安装)将正常工作。
绝对不应该有任何理由需要以提升的模式运行pip。
对于Python 2.7版本:
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py --force-reinstall

在 macOS 上也遇到了同样的问题,这是一个跨平台的常见问题。

2Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/bin/pip3' - endolith
1@endolith 好的,现在你想要使用 sudo rm -rf /usr/bin/pip3 - 首先清除该现有目录,然后重新安装。这是该目录上的权限问题,但在这种情况下最好重置,我相信你可以轻松地重新安装你失去的任何软件包。 如果这不起作用,也可以彻底删除你的Python 3安装,然后重新启动。 - Benjamin R
@BenjaminR 我该如何彻底清除系统中的Python相关内容并重新安装呢?多年来,我肯定犯了很多错误。 - endolith
1@endolith 你好,这取决于你的操作系统(如果是Linux,则还要考虑发行版)。告诉我你的系统信息,我会尽力指导你。顺便说一句,我们中的大多数人都曾经历过你现在的处境,不用害羞。 - Benjamin R
@BenjaminR Ubuntu,刚刚从上一个LTS版本升级到18.04。 - endolith
1@endolith 好的!请见:https://www.fosslinux.com/3534/how-to-completely-uninstall-applications-by-command-line-in-ubuntu.htm - Benjamin R
1@endolith 一旦完成此操作,请运行 which python / which python3。如果没有结果显示,请重新启动您的机器,然后使用 apt-get install <软件包名称> 重新安装 Python2/3。最后,如果遇到意外情况,请运行 find / -iname python*(这些命令可能需要 sudo 权限)。如果找到一个带有二进制文件的目录,请删除该目录并重新启动。 - Benjamin R
1这个在Windows 10上的WSL(Windows子系统Linux)也可使用。 - Max Candocia
1在我的情况下,这是因为Python实际上解析到了通过其他方式安装的较旧版本的pip模块,而不是通过操作系统的apt-get安装。那个较旧的版本(8.1)可能缺少__internal模块,一旦我卸载了它(python -m pip uninstall pip),通过apt-get安装的18.1版本的pip软件包被正确识别并且确实具有__internal模块以及正确的权限等。 - Edi Bice
这些都没有起作用,也没有解释为什么楼主的方法不起作用。总是要先解释为什么某事不起作用。猜测不能解释。 - foki
@foki 你是正确的,这不是一个"答案",只是一个"解决方案"。最好提供原因。你知道答案吗?我记得当时查过,但忘了具体为什么会发生这种情况。如果知道,请告诉我们或编辑我的回答。(修改了原始回复,因为我误读了你的意思。) - Benjamin R
1@BenjaminR 问题出现是因为Python解释器在PYTHONPATH上找不到pip._internal模块。pip只是另一个Python模块而已。要弄清楚为什么找不到它,我们必须查看他们的PYTHONPATH和Python解释器在特定情况下的位置(尤其是当存在多个Python安装时)。因此,按照你指出的方式重新安装pip可能会或可能不会解决任何问题。总之,为了得到对多个特定情况有价值的解决方案,我们需要理解我们正在做什么。 - foki

我通过使用Python更新pip来解决了这个问题,就像这样:
python2 -m pip install --user --upgrade pip
python3 -m pip install --user --upgrade pip

3/home/{user}/bldenv/bin/python3: No module named pip - Chaim Eliyah
是的,这对我有效,而上面基于curl的答案则没有。 - Thomas Browne

这个命令也有效。它重新安装了pip
sudo easy_install pip

4那是最容易的答案! - Serge Stroobandt
4在Ubuntu上工作得像个奇迹一样。 - user2849789
4我收到了sudo: easy_install: command not found的错误消息。 - half of a glazier
警告:easy_install命令已被弃用,并将在未来的版本中删除。 - Darwin
追溯(最近的调用在前): 文件“/usr/local/bin/easy_install”,第5行,在<module>中: 从setuptools.command.easy_install导入main 导入错误:无法从'setuptools.command.easy_install'(/usr/lib/python3/dist-packages/setuptools/command/easy_install.py)导入名称'main' - Snowcrash
因为它提到了“easy_”,所以已被弃用。 - Snowcrash

应用以下三个步骤:
  1. 通过终端进入 /usr/local/bin
  2. 执行 sudo gedit pip
  3. from pip._internal import main 改为 from pip import main

检查是否已安装pip
pip3 -V 

或者

pip3 --version

如果你不使用这个命令来安装它的话:
sudo apt install python3-pip

现在你可以使用
python3 -m pip install packageName

使用pip安装软件包。

1这就是OP已经在做的事情。 - Nik O'Lai

我刚才遇到了和你一样的问题,我发现原因是你没有使用超级用户权限进行工作,因为一些内部的Python包或模块是在超级用户权限下安装的。
所以你可以尝试先输入“sudo su”,然后输入密码,再运行“pip install”,这可能会有帮助。

4你绝对不应该以提升的权限运行 pip。 而是应该使用 --user 标志,例如:pip3 install --user <package> - Benjamin R
1然而,当我没有超级用户权限运行时,我仍然得到了类似的信息: pip3 install --user Traceback (most recent call last): File "/usr/local/bin/pip3", line 7, in <module>\ from pip._internal import main ImportError: No module named 'pip._internal' 请问你能帮我找出为什么这种情况总是发生吗? - Daniel
2好的,我找到了原因,如果出现 from pip._internal import main 错误,可以按照以下解决方案进行操作:1) 执行命令 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py,然后2) 执行命令 python3 get-pip.py --user --force-reinstall。这样你就可以在不需要超级用户权限的情况下运行 pip 了。非常感谢你的建议,帮助了很多! - Daniel
非常愉快!听着,我吃了不少苦头才明白要小心使用sudo(多次毁掉了我的操作系统!) - Benjamin R
嗯,https://askubuntu.com/a/802594/5032 - endolith

使用-H标志进行强制重新安装pip对我起了作用。
sudo -H python3.7 get-pip.py --force-reinstall

不要使用sudo来安装pip:https://askubuntu.com/questions/802544/is-sudo-pip-install-still-a-broken-practice - Benjamin R

pip版本现在是19.0.1:
which pip3
#/home/xxx/.local/bin/pip3
vim /home/xxx/.local/bin/pip3

将 `from pip._internal import main` 改为 `from pip import main`

1追溯(最近的调用在前): 文件“/usr/local/bin/pip3”,第5行,在<module>中, 从pip导入main 导入错误:无法从'pip'(/usr/lib/python3/dist-packages/pip/init.py)导入名称'main' - fccoelho