升级pip后的错误:无法导入name 'main&#39。

每当我试图用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 "的方式)。

pip 10.x调整了其内部结构的位置。 你看到的pip3命令是由你的软件包维护者提供的(这里应该是基于debian的?),不是由pip管理的文件。

你可以在pip's issue tracker上阅读更多相关信息。

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

为了恢复pip3二进制文件,你需要sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

如果你想继续在"不支持的领域"(在系统包管理器之外升级一个系统包),你可能可以用python3 -m pip ...代替pip3

评论(17)

检查pip是否被缓存在另一个路径上,要这样做,调用$ which pip,并检查路径是否与错误中提示的路径不同,如果是这样,就运行。

$ hash -r

缓存清除后,pip将重新工作。 参考资料:http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory

评论(0)

我使用sudo apt remove python3-pip,然后pip就可以工作了。

 ~ sudo pip install pip --upgrade
[sudo] password for sen: 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in 
    from pip import main
ImportError: cannot import name 'main'
➜  ~ sudo apt remove python3-pip   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
  python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜  ~ pip

Usage:   
  pip  [options]
评论(1)