<p>pip ImportError:更新后无法导入名称“main”</p>

创建于 2018-05-28  ·  18评论  ·  资料来源: pypa/pip

维护者注意:任何仍然遇到此问题的人请参阅 #5599。


环境

  • 点子版本:???
  • Python版本:3.5.2
  • 操作系统:Linux sas-linuxmint 4.4.0-92-generic #115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
sas@sas-linuxmint /usr/bin $ pip3 install --user --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
ImportError: cannot import name 'main'
sas@sas-linuxmint /usr/bin $ pip3 install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
duplicate

最有用的评论

hash -d pip
为我工作

所有18条评论

同样的问题

同样的问题

这与#5221 相同。

@pradyunsg为什么将其标记为已关闭问题的副本? 如果它仍然是一个问题,它显然没有关闭......

@sydannyhttps :

在这种情况下,特定问题似乎是:

  1. pip3 install --user --upgrade pip在用户站点中安装 pip 10,但不会卸载 pip 的系统站点副本。
  2. 用户从/usr/bin/pip3运行系统包装器,它来自操作系统提供的 pip 8。这个包装器希望看到 pip 8,但它不会因为用户站点优先于系统站点。

解决方案是使用在--user安装 pip 10 时安装的 pip 包装器。 这将意味着更改您的 PATH 以将其放在首位,或者在调用 pip 时使用显式路径。

从技术上讲,这里的问题与 #5221 略有不同,因为在该问题中用户覆盖了系统 pip。 但根本原因是相同的 - 对较新版本的 pip 使用较旧的 pip 包装器(由操作系统提供)。 这不是受支持的场景,您无法通过正确使用 pip 来遇到它。 所以不存在 pip 问题,因此我们在问题出现时关闭它们。 我们将用户引导至 #5221,因为这是有关如何在不正确的升级后整理系统的大部分建议的地方。

thang@cq-gpu :/mnt/tmp/tqdscripts/azure/nvtf$ pip3 install --user --upgrade pip
回溯(最近一次调用最后一次):
文件“/usr/bin/pip3”,第 9 行,在
从 pip 导入主
导入错误:无法导入名称“main”

这对我没有任何作用。 还是一样的问题。

请查看 #5599 和那里链接的问题。

hash -d pip
为我工作

我卸载并重新安装了pip。 似乎工作。

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

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

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

嗨,伙计们! 我有同样的问题并解决了它。 这是我的解决方案。
首先,当我运行 pip install something 时,错误是这样出现的:

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

所以,我 cd 进入文件 /usr/bin/ 和 cat pip3 以查看其中的代码。 我在里面看到了这个:

`#!/usr/bin/python3
# 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.
from pip import main
if __name__ == '__main__':
    sys.exit(main())
`

然后我认为它不在安装路径中。 所以我 cd 进入 python3-pip,像这样:

cd /.local/lib/python3.5/site-packages/pip
ps:你必须在你的电脑中进入正确的方向
然后我cat文件查看差异(可以使用其他操作查看代码):

cat __main__.py

我看到了这个:

`from __future__ import absolute_import
import os
import sys
# If we are running from a wheel, add the wheel to sys.path
# This allows the usage python pip-*.whl/pip install pip-*.whl
if __package__ == '':
    # __file__ is pip-*.whl/pip/__main__.py
    # first dirname call strips of '/__main__.py', second strips off '/pip'
    # Resulting path is the name of the wheel itself
    # Add that to sys.path so we can import pip
    path = os.path.dirname(os.path.dirname(__file__))
    sys.path.insert(0, path)

from pip._internal import main as _main  # isort:skip # noqa

if __name__ == '__main__':
    sys.exit(_main())
`

那么,你能看出区别吗? 我可以弄清楚我必须使文件与 /usr/bin/pip3 中的文件相同

所以,我复制了 /.local/lib/python3.5/site-packages/pip 中的代码来替换 /usr/bin/pip3 中的代码
问题消失了!

ps: pip3 或 pip 在这个问题上没有区别。
如果我的解决方案解决了您的问题,我会很高兴!

使用 pip3 :+1:

你应该尝试使用
python3 -m pip install --user "packagename"

@linpanusst是正确的

sudo ln -sf $( type -P pip ) /usr/bin/pip

同样的问题在这里仍然存在。 深度操作系统,15.7。 有趣的是,作为普通用户,它失败了,但似乎与 sudo 一起工作得很好:

$ pip3 search audioshare
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
$ sudo pip3 search librosa
librosa (0.6.2)  - Python module for audio and music processing

建议的解决方法sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall没有任何区别。

发布在stackoverflow上的解决方案建议编辑/usr/bin/pip3可以帮助普通用户,但会破坏sudo

$ sudo pip3 search librosa
Traceback (most recent call last):
  File "/usr/bin/pip3", line 13, in <module>
    sys.exit(__main__._main())
AttributeError: module 'pip.__main__' has no attribute '_main'

请查看 #5599 和那里链接的问题。

此页面是否有帮助?
0 / 5 - 0 等级