ImportError: cannot import name NullHandler
记录一次python脚本执行报错的问题和解决方法:
问题起因:
python版本:2.6.6
系统环境:centos 6.9
原本想装一个influxdb的模块:pip install influxdb-5.0.0-py2.py3-none-any.whl (这个命令)
报错:-bash: pip: command not found
安装pip:
wget https://bootstrap.pypa.io/get-pip.py
easy_install pip --报错
再安装:yum install -y python-pip ,这个命令安装成了,但是好像提示了一大坨内容。没有去管它。
后来发现执行python脚本报下面错误,在安装pip命令之前脚本正常执行:
Traceback (most recent call last):
File "weixin_report.py", line 7, in <module>
import urllib3
File "/usr/lib/python2.6/site-packages/urllib3/__init__.py", line 9, in <module>
from logging import NullHandler
ImportError: cannot import name NullHandler
解决思路:
通过报错信息查看__init__.py 文件,发现该文件确实在我执行安装pip命令的时间被改过,然后进去把from logging import NullHandler 这行注释掉,但是还是不行。后来百度了很多文档都无法解决,遇到这个问题的朋友很多,但是没有实际的经验可以借鉴。
真正解决方法:
下载python 2.7.18 的安装包,编译安装一次,然后把python2的命令替换掉(一定要先把python2.6备份)
替换之后如下:
# ll /usr/bin/python*
lrwxrwxrwx 1 root root 34 Jan 26 15:29 /usr/bin/python -> /usr/local/python2.7.18/bin/python
lrwxrwxrwx. 1 root root 6 Dec 7 2017 /usr/bin/python2 -> python
-rwxr-xr-x 2 root root 8.9K Aug 18 2016 /usr/bin/python2.6
-rwxr-xr-x 2 root root 8.9K Aug 18 2016 /usr/bin/python2.6.bak
故事前介:上面是线上机的操作出问题的,我线下测试机是centos7.4 稳定版。python是2.7的,安装influxdb模块正常。我在难道是pip不支持python2的原因导致?我centos7 是这个新闻之前安装的,线上环境是这个新闻之后安装的。
那也不应该影响到我的旧版本啊。新闻如下:
还没有评论,来说两句吧...