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

时间:2015-01-29 08:39:53

标签: python pip importerror

我已经安装了最新的python(2.7.9)捆绑了pip和setuptools for windows 32-bit。我尝试重新安装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

15 个答案:

答案 0 :(得分:216)

该错误发现于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())

答案 1 :(得分:143)

尽管最初的问题似乎是从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> 

答案 2 :(得分:50)

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

答案 3 :(得分:13)

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

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

有效。

答案 4 :(得分:6)

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

  1. 从官方链接下载get-pip:https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. 使用commande运行它:python get-pip.py
  3. 并且pip已经修复并完美运行。

答案 5 :(得分:2)

在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

说明:

问题是由于main._internal下的pip版本10移动内部命名空间的变化以及homebrew所做的bin脚本仍然从旧位置(它曾经是版本9)中查找它而引起的。问题和一些讨论https://github.com/pypa/pip/issues/5240

答案 6 :(得分:2)

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

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

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

答案 7 :(得分:1)

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

解决方案包括再次创建硬链接。或者甚至更好,停止使用硬链接并使用软链接。

答案 8 :(得分:0)

对于那些使用pip 10和PyCharm有类似问题的人,请在这里下载latest version

答案 9 :(得分:0)

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

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

答案 10 :(得分:0)

尝试

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

答案 11 :(得分:0)

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

只需致电

pip install --upgrade pip

答案 12 :(得分:0)

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

<a href="{{ route('post', ['post' => @{{ post.id }}]) }}">My post</a>

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

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

答案 13 :(得分:0)

打开您的终端Linux。

hash -d pip

答案 14 :(得分:0)

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

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