运行 Pip3 导入错误:无法导入名称“main”

The*_*Dog 24 python3 pip

我想安装 Scipy(已经安装了 Numpy)。我安装了带有 OS 和 IDLE3 (3.5.2) 的 Python 3.5.1-3。当我进入终端时

sudo pip3 install scipy
Run Code Online (Sandbox Code Playgroud)

它打印出来

Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
Run Code Online (Sandbox Code Playgroud)

我已经尝试重新安装 pip3 并重新启动操作系统,但它没有改变。pip3 是否与其他人一起奇怪地工作?

Cir*_*郝海东 32

使用python -m pip install代替pip install

例子:

python -m pip install --user somepackage
python3 -m pip install --user somepackage
Run Code Online (Sandbox Code Playgroud)

pip升级后我开始遇到这个问题:

pip install --upgrade --user pip
Run Code Online (Sandbox Code Playgroud)

pip(相应地pip3)执行是由你的发行版(提供python-pip包在Ubuntu 16.04)。

因此,pip当您升级 pip 时,它不会与包本身保持同步,并且可能会中断。

如果您只是python -m pip直接使用,例如:

python -m pip install --user somepackage
python3 -m pip install --user somepackage
Run Code Online (Sandbox Code Playgroud)

它遍历您的 Python 路径并找到最新版本的 pip,然后执行该文件。

它依赖于该文件是可执行的这一事实,但这是一种非常标准的接口类型,因此比 hackier Debian 脚本更不容易损坏。

然后我建议将以下功能添加到您的.bashrc

pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Run Code Online (Sandbox Code Playgroud)

Ubuntu 18.04/usr/bin/pip3文件执行以下操作:

from pip import main
Run Code Online (Sandbox Code Playgroud)

并且大概在某个时候main被移除了pip,这就是破坏事情的原因。

破坏性的pip 提交似乎是:95bcf8c5f6394298035a7332c441868f3b0169f4“Move all internal APIs to pip._internal”,它进入了 pip 18.0。

pip39.0.1更新到 18.0后在 Ubuntu 16.04 中测试。

pyenv

然而,最终,对于严肃的 Python 开发,我只建议您使用 pyenv + virtualenv 安装自己的本地 Python,这也可以解决这个 Ubuntu 错误:如何使用 apt-get 安装不同的 Python 版本?


小智 20

该错误在 pip 10.0.0 中发现。

在 linux 中,您需要修改文件:/usr/bin/pip 从:

from pip import main
if __name__ == '__main__':
    sys.exit(main())
Run Code Online (Sandbox Code Playgroud)

对此:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())
Run Code Online (Sandbox Code Playgroud)


kar*_*rel 11

numpy 和 scipy 位于所有当前支持的 Ubuntu 版本的默认存储库中。要为 Python 3.x 安装 numpy 和 scipy,请打开终端并键入:

sudo apt update    
sudo apt install python3-numpy python3-scipy  
Run Code Online (Sandbox Code Playgroud)

对于 Python 2.x,它是:

sudo apt update  
sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later 
sudo apt install python-numpy # 20.04 and earlier
sudo apt install python-scipy # 18.04 and earlier
Run Code Online (Sandbox Code Playgroud)

  • 正如另一个答案所述,该答案与与 pip 有关的潜在问题无关。 (4认同)

小智 9

我遇到了同样的问题,但是使用 apt 和 pip 卸载并重新安装对我不起作用。

我看到了另一个解决方案,它提供了一种简单的方法来恢复 pip3 路径:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Run Code Online (Sandbox Code Playgroud)


JMA*_*MAA 6

虽然 karel 可能已经解决了您的“安装 numpy 和 scipy”问题,但您系统上的 pip 问题尚未得到解决,因此您可能会遇到更多 pip 问题。

这里,这似乎是最近在 Ubuntu 系统上使用 pip 10 的一个非常普遍的问题。您可能会在该线程上找到一些适合您的变通方法,但希望更新会尽快修复它。