ImportError:在 windows7 32 位中运行 pip --version 命令时无法导入名称 main

Posted

技术标签:

【中文标题】ImportError:在 windows7 32 位中运行 pip --version 命令时无法导入名称 main【英文标题】:ImportError: cannot import name main when running pip --version command in windows7 32 bit 【发布时间】:2015-03-28 09:59:40 【问题描述】:

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

这是在管理员 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

【问题讨论】:

这可能与文件权限有关 python 3.4 here 存在问题,已解决,值得检查。 我使用 icacls 命令解决了问题,但错误仍然存​​在。 "easy_install -U pip" 答案在***.com/questions/28031277/…unpack-url 提供 【参考方案1】:

在 pip 10.0.0 中发现该 bug。

在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())

【讨论】:

看来这就是解决方案。我试过了,到目前为止没有问题。 我正在使用 pip 10.0.1 并且错误仍然存​​在。你的解决方案有帮助。谢谢!您是否将此错误和解决方案报告给开发人员? 尽管此解决方案有效,但请不要修改pip 本身。请参阅下面的更简洁的解决方案,改为从 Python 调用 pip 对“pip 10.0.1”没有帮助。 pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) 用法:sudo pip install tensorflow 输出:Traceback (most recent call last): File "/usr/bin/pip", line 9, in &lt;module&gt; from pip import main ImportError: cannot import name main @creepy_driver ,不建议手动修改已安装的软件包以适应环境,因为下次您更新到另一个版本时,即 10.0.3 您可能会遇到同样的问题。通过已安装的 Python 运行pip 的解决方法将指向 pip 正确使用合适的环境。【参考方案2】:

尽管最初的问题似乎来自 2015 年,但这个“错误”似乎也会影响安​​装 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> 

【讨论】:

是的,我不记得我做了什么来解决这个问题,但我会向其他人开放。 当我使用给定的命令时,我得到了一个权限错误(我也是在根据 catalinpopescu 的回答改变 pip 后得到的)。但是,要下载用户范围的软件包(这样您就不需要管理权限),请使用:python3 -m pip install --user(适用于 python3,也应该适用于 python2,但未经测试) 在 Mac 上帮助我。 更好的答案。修改源代码是一个沼泽。 这是一个非常好的方法。它还可以很容易地确保您使用的是正确的版本:python2 -m pip install $package【参考方案3】:

在 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())

【讨论】:

在 ubuntu 16.04 上工作 这不是一个好主意。正如@RichardElkins 在另一个回答中提到的那样:“人们不应该浪费时间编辑安装后不打算修改的已安装文件”【参考方案4】:

在 Windows 10 上,我使用以下命令来降级 pip:

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

这也应该适用于 Linux 和 Mac。

【讨论】:

应该是python -m pip install pip==9.0.3 @elelias 哦,我没有意识到这一点。谢谢你告诉我! 我不得不python easy_install.py pip==9.0.3,因为在第一行之后,没有找到 pip。 也适用于 Linux 和 Mac。在 pip/pip3 10 修复之前,这是一种解决方法。人们不应该浪费时间编辑安装后不打算修改的已安装文件.. 升级后我遇到了路径问题,我做了以下工作。 sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall【参考方案5】:

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

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

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

【讨论】:

我有 python 2.7,所以我必须更改命令以匹配 python 2.7 sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall 在 ubuntu 上完美运行,但我认为它不会在 windows 上运行【参考方案6】:

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

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

并且 pip 是固定的并且可以完美地工作。

【讨论】:

把pythonget-pip-py改成pythonget-pip.py 完美运行!谢谢。 也为我工作。谢谢【参考方案7】:

在 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 下,并且由 homebrew 放置的 bin 脚本仍然从旧位置(它曾经在版本 9 中的位置)查找它。问题和一些讨论https://github.com/pypa/pip/issues/5240

【讨论】:

【参考方案8】:

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

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

【讨论】:

如何解决这个问题?【参考方案9】:

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

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

pip 降级到 9.0.3 对我来说效果很好。

【讨论】:

【参考方案10】:

对于在 PyCharm 中使用 pip 10 时遇到类似问题的用户,请在此处下载 latest version

【讨论】:

【参考方案11】:

它适用于 ubuntu 16.04。 第 1 步:

 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())

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

【讨论】:

【参考方案12】:

试试这个

#!/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())

【讨论】:

【参考方案13】:

一个适用于 Ubuntu 的简单解决方案,但也可以解决 Windows 上的问题:

只要打电话

pip install --upgrade pip

【讨论】:

【参考方案14】:

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

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

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

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

【讨论】:

【参考方案15】:

打开你的终端linux。

hash -d pip

【讨论】:

嗨,Carlos,欢迎来到 Stack Overflow。为了帮助其他用户面临这个问题,请您添加答案以阐明此命令的作用以及它如何解决问题。【参考方案16】:

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

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

【讨论】:

以上是关于ImportError:在 windows7 32 位中运行 pip --version 命令时无法导入名称 main的主要内容,如果未能解决你的问题,请参考以下文章

cx_Freeze- ImportError:无法导入名称设置

ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序。但是DLL在那里

ImportError:没有名为“twitter”的模块

python ImportError:没有名为win32file的模块

ImportError: DLL 加载失败: %1 不是有效的 Win32 应用程序

ImportError: No module named win32api