每当我试图使用pip安装任何包时,我都会得到这个导入错误:

guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

它之前工作得很好,我不知道为什么它会抛出这个错误。 我已经搜索了这个错误,但找不到任何方法来修复它。

如果你需要进一步的细节,请让我知道,我会更新我的问题。


当前回答

我们可以通过修改pip文件来清除错误。

检查文件的位置:

$ which pip

路径-> /usr/bin/匹普

转到该位置(/usr/bin/pip)并打开终端

输入:$ sudo nano pip

你可以看到:

import sys
from pip import main
if __name__ == '__main__':
     sys.exit(main())

改变:

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

然后按CTRL + o写入更改并退出

希望这能奏效!!

其他回答

我使用下面的代码来加载一个可能需要安装的模块,从而避免了这个错误(我也得到了这个错误)-使用最新的Python和最新的pip没有问题

try
  from colorama import Fore, Back, Style
except:
  !pip install colorama
  from colorama import Fore, Back, Style

只需一步即可解决。

我也遇到过这个问题,但这可以简单地通过1个命令来解决,而不用打扰和浪费时间,我已经在多个系统上尝试过了,这是这个问题最干净的解决方案。这就是:

对于python3:- sudo python3- m pip uninstall pip && sudo apt install python3-pip——重新安装。

这样,您就可以简单地使用pip3安装包。要检查,请使用pip3——version。

旧版本请使用:sudo python -m pip uninstall pip && sudo apt install python-pip——重新安装。

这样,现在您就可以使用pip简单地安装包了。检查使用PIP——版本。

我们可以通过修改pip文件来清除错误。

检查文件的位置:

$ which pip

路径-> /usr/bin/匹普

转到该位置(/usr/bin/pip)并打开终端

输入:$ sudo nano pip

你可以看到:

import sys
from pip import main
if __name__ == '__main__':
     sys.exit(main())

改变:

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

然后按CTRL + o写入更改并退出

希望这能奏效!!

我在Ubuntu 16.04系统上遇到了同样的问题。我设法用以下命令重新安装pip来修复它:

Curl https://bootstrap.pypa.io/get-pip.py | sudo python3

我使用pip3修复错误的方法是:

Sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3

所有的工作原理:

 demon@UbuntuHP:~$ pip -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

 demon@UbuntuHP:~$ pip2 -V
 pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)

 demon@UbuntuHP:~$ pip3 -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

也许新的10.0.1版本的pip没有更新/usr/bin中的二进制文件?(但事实似乎并非如此)

编辑:同样的问题出现在Ubuntu 18.04中。我发现的最佳解决方案是从/home/<user/链接pip二进制文件。Local /bin到/usr/ Local /bin或/usr/bin(取决于你的偏好),如下所示:

ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip
ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2
ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7
ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3
ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6

注意:将<用户>替换为当前运行用户

相关版本(最新)如下:

3.6版本:

/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)

2.7版本:

/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)