维护者注意:任何仍然遇到此问题的人请参阅 #5599。
环境
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'
同样的问题
同样的问题
这与#5221 相同。
@pradyunsg为什么将其标记为已关闭问题的副本? 如果它仍然是一个问题,它显然没有关闭......
@sydanny : https :
在这种情况下,特定问题似乎是:
pip3 install --user --upgrade pip
在用户站点中安装 pip 10,但不会卸载 pip 的系统站点副本。/usr/bin/pip3
运行系统包装器,它来自操作系统提供的 pip 8。这个包装器希望看到 pip 8,但它不会因为用户站点优先于系统站点。解决方案是使用在--user
安装 pip 10 时安装的 pip 包装器。 这将意味着更改您的 PATH 以将其放在首位,或者在调用 pip 时使用显式路径。
从技术上讲,这里的问题与 #5221 略有不同,因为在该问题中用户覆盖了系统 pip。 但根本原因是相同的 - 对较新版本的 pip 使用较旧的 pip 包装器(由操作系统提供)。 这不是受支持的场景,您无法通过正确使用 pip 来遇到它。 所以不存在 pip 问题,因此我们在问题出现时关闭它们。 我们将用户引导至 #5221,因为这是有关如何在不正确的升级后整理系统的大部分建议的地方。
https://github.com/pypa/pip/issues/5221#issuecomment -381568428 对我有用
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 和那里链接的问题。
最有用的评论
hash -d pip
为我工作