升级pip后的错误:无法导入name 'main'。
每当我试图用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())
它之前工作正常,我不知道为什么会出现这个错误。 我搜索了关于这个错误的信息,但没有找到任何可以解决它的方法。
如果你需要任何进一步的细节,请告诉我,我将更新我的问题。
443
3
你一定是无意中升级了你的系统pip(可能是通过类似 "sudo pip install pip --upgrade "的方式)。
pip 10.x调整了其内部结构的位置。 你看到的
pip3
命令是由你的软件包维护者提供的(这里应该是基于debian的?),不是由pip管理的文件。你可以在pip's issue tracker上阅读更多相关信息。
你可能希望不要升级你的系统pip,而是使用virtualenv。
为了恢复
pip3
二进制文件,你需要sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
。如果你想继续在"不支持的领域"(在系统包管理器之外升级一个系统包),你可能可以用
python3 -m pip ...
代替pip3
。检查pip是否被缓存在另一个路径上,要这样做,调用$ which pip,并检查路径是否与错误中提示的路径不同,如果是这样,就运行。
缓存清除后,pip将重新工作。 参考资料:http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
我使用
sudo apt remove python3-pip
,然后pip
就可以工作了。