ImportError: cannot import name NullHandler
阿新 • • 發佈:2021-01-29
技術標籤:PythonNullHandlerpython報錯python
記錄一次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 是這個新聞之前安裝的,線上環境是這個新聞之後安裝的。
那也不應該影響到我的舊版本啊。新聞如下: