每当我试图使用pip安装任何包时,我都会得到这个导入错误:
guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
guru@guru-notebook:~$ cat `which 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())
它之前工作得很好,我不知道为什么它会抛出这个错误。
我已经搜索了这个错误,但找不到任何方法来修复它。
如果你需要进一步的细节,请让我知道,我会更新我的问题。
您一定是无意中升级了您的系统pip(可能是通过sudo pip install pip—upgrade之类的程序)
皮普10。X调整它内部的位置。您看到的pip3命令是由您的包维护者提供的(想必debian基于这里?),而不是由pip管理的文件。
您可以在pip的问题跟踪器上阅读更多有关此的信息
您可能不希望升级您的系统pip,而是使用virtualenv。
要恢复pip3二进制文件,您需要sudo python3 -m pip uninstall pip && sudo apt install python3-pip—重新安装。
如果您想继续在“不受支持的领域”(在系统包管理器之外升级系统包),您可能可以使用python3 -m pip…而不是pip3。
我使用sudo apt删除python3-pip,然后pip工作。
~ sudo pip install pip --upgrade
[sudo] password for sen:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
➜ ~ sudo apt remove python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜ ~ pip
Usage:
pip <command> [options]
您可以使用update-alternatives简单地修复PIP和pip3路径
首先要检查的是当前的$PATH
执行echo $PATH,查看是否可以找到pip3和pip通常所在的/usr/local/bin
有一个变化,您的系统在这里查找/bin/pip和/bin/pip
所以我将通过添加到你的~/来修复PATH。Bash_profile文件,因此它会持续存在
导出路径= $路径:/ usr /地方/ bin
然后检查它是用哪个PIP和哪个pip3固定的
如果没有,最后使用update-alternatives来修复它
update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30
如果你想把PIP指向pip3,那么
update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30
我在一个系统上运行,我有sudoapt但没有sudopip。(并且没有su访问权限。)我听从了皮普的建议,陷入了同样的境地:
您使用的是pip 8.1.1版本,但是有18.0可用。您应该考虑通过'pip install——upgrade pip'命令进行升级。
其他修复对我都不起作用,因为我没有足够的管理权限。然而,在阅读这篇文章后,有几件事让我印象深刻:
我不应该这么做的。当然,皮普让我这么做的。它撒了谎。
使用——user通过关注仅用户目录解决了许多问题。
因此,我发现这个命令行可以将我恢复到原来的位置。如果您使用的是与8.1.1不同的版本,那么您显然希望更改该行的这一部分。
python -m pip install --force-reinstall pip==8.1.1 --user
这是唯一对我有效的方法,但它非常有效!