每当我试图使用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写入更改并退出

希望这能奏效!!

其他回答

从pip._internal导入main

from pip._internal import main

编辑pip代码

sudo nano /usr/bin/pip3

是有问题的包,当它生成de文件/usr/bin/pip, 您必须更改导入:

from pip import main

to

from pip._internal import main

这解决了问题,我不确定为什么它产生,但它在以下问题中说了一些事情:

pip10升级后的pyenv "ImportError:不能导入名称'main'"

上面的命令对我没用,但它们非常有用:

sudo apt purge python3-pip
sudo rm -rf '/usr/lib/python3/dist-packages/pip'  
sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
sudo rm -rf pip*  
cd
cd .local/lib/python3.5/site-packages
sudo rm -rf pip*  
sudo pip3 install jupyter

在Debian上,你需要先更新apt ....

sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet

如果你跳过'sudo apt-get update -qq',你的pip将变得腐败,并显示'无法找到主'错误。

当我想将系统pip pip3从9.0.1升级到19.2.3时,我也遇到了这个问题。

执行pip3 install——upgrade pip后,pip版本变为19.2.3。但是main()在pip中被移动了。_internal在最新版本中,这会导致pip3失效。

因此,在文件/usr/bin/pip3中,将第9行:from pip import main替换为from pip。_internal导入main。这个问题将被修复,对python2-pip的作用相同。(在Ubuntu 18.04发行版上测试)

根据@Vincent H。的回答