【问题标题】:ImportError: cannot import name main when running pip --version command in windows7 32 bitImportError:在 windows7 32 位中运行 pip --version 命令时无法导入名称 main
【发布时间】: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" 答案在stackoverflow.com/questions/28031277/…unpack-url 提供

标签: python pip importerror


【解决方案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 解决了这个问题。

  1. 从官方链接下载get-pip:https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. 使用命令运行它: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 脚本消除了这个问题。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2017-04-04
                  • 2022-07-29
                  • 2019-04-13
                  • 2023-03-10
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-01-08
                  • 2020-05-07
                  相关资源
                  最近更新 更多