Import Error: 在 Windows732位运行 pip —— version 命令时无法导入 name main

我已经安装了最新的 python (2.7.9) ,它与32位 Windows 的 pip 和 setuptools 捆绑在一起。我试过重新安装 pip,但问题仍然存在。

下面是在 Administrator cmd 中运行 pip --version后出现的错误:

Traceback (most recent call last):
File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "D:\Python\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main
142801 次浏览

该 bug 在 pip 10.0.0中找到。

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

from pip import main
if __name__ == '__main__':
sys.exit(main())

回到这里:

from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())

在 MacOS 上,如果您已经通过 Homebrew 安装了 python,请更改 /usr/local/opt/python/libexec/bin/pip中的行

来自

from pip.internal import main

from pip._internal import main

或者使用这一个班轮: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

说明:

这个问题是由于 pip 版本10在 main._internal下移动了内部名称空间,而且自制的 bin 脚本仍然从老地方(在版本9中曾经是)查看它所引起的。问题和一些讨论

对于那些在使用 PyCharm 的 pip 10时遇到类似困难的人,可以在这里下载 最新版本

尽管最初的问题似乎来自2015年,但这个“ bug”似乎也会影响到安装 pip-10.0.0的用户。

解决办法不是修改 pip,而是改变 pip 的调用方式。不要通过 Python 本身调用 /usr/bin/pip,而是调用 pip。例如:

pip install <package>

如果来自 Python 版本2(或者默认的 Python 二进制文件称为 python) ,请执行:

python -m pip install <package>

或者是否来自 Python 版本3:

python3 -m pip install <package>

如果您在 PATH中有一个硬链接要 pip (即,如果您安装了多个 python 版本) ,然后您升级 pip,您也可能会遇到这个错误。

解决方案在于再次创建硬链接,或者更好的方法是停止使用硬链接而使用软链接。

在 Ubuntu Server 16上,python27也有同样的问题:

改变

from pip import main
if __name__ == '__main__':
sys.exit(main())

from pip._internal import main
if __name__ == '__main__':
sys.exit(main())

我通过使用 get-pip.py重新安装 pip 修复了这个问题。

  1. 从官方链接下载 get-pip: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. 使用命令 python get-pip.py运行它。

皮普修好了,工作正常。

在 Windows10上,我使用了以下命令来降低 pip 的等级:

python -m pip uninstall pip
python -m pip install pip==9.0.3

这也可以在 Linux 和 Mac 上使用。

它可以在 ubuntu 16.04上运行。 第一步:

 sudo gedit /home/user_name/.local/bin/pip

打开的文件内容如下:

#!/usr/bin/python


# -*- coding: utf-8 -*-
import re
import sys


from pip import main


if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

main改为 __main__,如下所示:

#!/usr/bin/python


# -*- coding: utf-8 -*-
import re
import sys


from pip import __main__


if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(__main__._main())

保存文件并关闭它。你就完成了!

试试这个

#!/usr/bin/python
# 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.i
try:
from pip import main
except ImportError:
from pip._internal import main
if __name__ == '__main__':
sys.exit(main())

我有同样的问题,但卸载和重新安装与 apt 和 pip 不适合我。

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

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

一个简单的解决方案,可以在 Ubuntu 上使用,但也可以在 windows 上修复这个问题:

打电话吧

pip install --upgrade pip

这解决了我在 ubuntu 18.04中尝试使用 python3.6时遇到的问题:

rm -rf ~/.local/lib/python3.6

您可以使用 mv 将文件夹移动到另一个位置,而不是删除它,以便测试:

mv ~/.local/lib/python3.6 ./python3.6_old

打开终端 Linux。

hash -d pip

在 Windows10上,我也遇到了同样的问题。PIP 19已经安装在我的系统中,但是没有显示出来。错误是 No Module Found

python -m pip uninstall pip
python -m pip install pip==9.0.3

pip降级到9.0.3对我来说还不错。

在我们的示例中,在2020年使用 Python 3时,这个问题的解决方案是将 Python 安装移动到实例化 VM 的 cloud-init启动脚本。

当我们尝试使用 VM 生命周期后期用户调用的脚本安装 Python 时,我们遇到了同样的错误,但是将相同的 Python 安装代码移动到 cloud-init脚本消除了这个问题。