每当我试图使用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())

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

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


当前回答

我使用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)

其他回答

您一定是无意中升级了您的系统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。

我也有同样的错误,但是python -m pip仍然在工作,所以我用核选项sudo python -m pip install -upgrade pip来修复它。它为我做到了。

您可以使用update-alternatives简单地修复PIP和pip3路径

首先要检查的是当前的$PATH 执行echo $PATH,查看是否可以找到pip3和pip通常所在的/usr/local/bin

有一个变化,您的系统在这里查找/bin/pip和/bin/pip 所以我将通过添加到你的~/来修复PATH。Bash_profile文件,因此它会持续存在

导出路径= $路径:/ usr /地方/ bin 然后检查它是用哪个PIP和哪个pip3固定的

如果没有,最后使用update-alternatives来修复它

update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30

如果你想把PIP指向pip3,那么

update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30

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

我在Pixelbook上使用新的LXC(拉伸)时也遇到了同样的情况。这个解决方案与公认的解决方案非常相似,只有一个细微的区别,这为我固定了pip3。

sudo python3 -m pip install --upgrade pip

这使版本发生了变化,现在它按预期工作。

我在这里找到的……确保pip是最新的