一尘不染

Python-升级pip后出错:无法导入名称“ main”

python

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

之前它运行良好,我不确定为什么会引发此错误。我已经搜索了此错误,但找不到任何可修复的错误。

如果你需要更多详细信息,请告诉我,我将更新我的问题。


阅读 553

收藏
2020-02-18

共2个答案

一尘不染

你必须不经意间升级了系统pip(可能通过sudo pip install pip --upgrade

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

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

你可能会想不升级系统PIP和改为使用的virtualenv

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

如果要继续在“不受支持的地区”(在系统软件包管理器之外升级系统软件包),则可以选择python3 -m pip ...而不是pip3

2020-02-18
一尘不染

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

检查文件的位置:

$ which pip

路径-> / usr / bin / pip

转到该位置(/ 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写入更改并退出

2020-02-18