每当我试图使用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(可能是通过sudo pip install pip—upgrade之类的程序)

皮普10。X调整它内部的位置。您看到的pip3命令是由您的包维护者提供的(想必debian基于这里?),而不是由pip管理的文件。

您可以在pip的问题跟踪器上阅读更多有关此的信息

您可能不希望升级您的系统pip,而是使用virtualenv。

要恢复pip3二进制文件,您需要sudo python3 -m pip uninstall pip && sudo apt install python3-pip—重新安装。

如果您想继续在“不受支持的领域”(在系统包管理器之外升级系统包),您可能可以使用python3 -m pip…而不是pip3。

其他回答

只需一步即可解决。

我也遇到过这个问题,但这可以简单地通过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并检查该路径与错误提示中的路径不同,如果是这样的话,运行:

$ hash -r

当缓存被清除时,pip将再次工作。 参考:http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory

使用python3 -m pip install——user pip==9.0.1(或有效的版本)恢复

正如@cryptoboy所说-检查你安装的pip/python版本

 demon@UbuntuHP:~$ pip -V
 demon@UbuntuHP:~$ pip2 -V
 demon@UbuntuHP:~$ pip3 -V

然后在.local/lib/文件夹中检查不需要的库。

当我迁移到更新的Kubuntu时,我备份了设置,在我的主目录中有.local/lib/python2.7/文件夹。安装python 3.6。我刚刚删除了旧文件夹,现在一切都很好!

您可以通过重新安装pip来解决此问题。

使用以下命令行命令之一重新安装pip:

Python2:

python -m pip uninstall pip && sudo apt install python-pip --reinstall

Python3:

 python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall