Overview
今天在服务器(Ubuntu 16.04
)使用pip
安装深度学习包Keras
的时候,发现安装结束之后下面有一行提示小字,大约就是pip
有新版本可以更新,使用XXX
命令更新,就顺带更新了一下,更新完了pip
就不能用了...
问题描述
及时是查看下pip
的版本
sudo pip --version
也会报下面的错误:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
解决方案
差了很多资料,发现是pip
新版本的一个bug
,跟平台无关,Windows
下也会出现这个问题(可以查看这里ImportError: cannot import name main when running pip --version command in windows7 32 bit)。
有3个解决办法:
直接修复这个
bug
,算是临时的解决方案。
用vim
编辑/usr/bin/pip
文件sudo vim /usr/bin/pip
可以看到下面的内容
from pip import main if __name__ == '__main__': sys.exit(main())
把这部分内容注释掉,换成下面的内容:
from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())
重新运行
pip
,不在报错了。对
Windows
下的pip安装位置不太熟悉,所以不知道应该在哪里修改这个文件。如果不知道在哪里修改,也可以考虑用python
命令讲pip
降级到没有bug
的版本:python -m pip uninstall pip python -m pip install pip==9.0.3
这个没试过,不知道行不行。
也有人说这个
bug
是由pip
的调用方式引起的,在调用pip
时,别用:pip install <package>
而是改用(python2):
python -m pip install <package>
或者(python3):
python3 -m pip install <package>