Fork me on GitHub

PIP3升级后报错:"ImportError:cannot import name 'main'解决办法"

这个问题其实很早之前我就遇到过,当时用的是python2,在升级PIP之后发现报了一个错误,如下:

1
2
3
4
5
ubuntu@hello:/# pip3 install openpyxl
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'

报这个错的原因是PIP更新为10.0.0后库里面函数有所变动导致的结果。首先找到/usr/bin/pip中的pip文件,找到找到以下代码:

1
2
3
from pip import  main
if __name__ == '__main__':
sys.exit(main())

将最后一行代码改成以下代码:

1
2
3
from pip import main
if __name__ == '__main__':
sys.exit(__main__.main())

然后保存退出就可以解决这个错误了。

需要特别注意的是,如果是python2中遇到了这个问题,需要先找到python2的路径,用which python来找到python2,如果是python3中的pip3遇到了这个问题,那么也应该找到对应的pip3,然后去修改上述代码,这点是我看了很多教程中没有提及到的地方。

在写这篇文章的时候发现了HEXO博客的另一个问题,就是如果HEXO博客题目中带有空格的话,会报以下错误:

1
YAMLException: incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line at line 1, column 29:

解决上述问题只需要把题目含有空格的内容加上双引号即可,如下:

1
2
3
4
5
# 原文章标题,执行hexo g后报错
PIP3升级后报错:ImportError:cannot import name 'main'解决办法

# 更新后的文章标题,执行hexo g后正常
PIP3升级后报错:"ImportError:cannot import name 'main'解决办法"