1. 程式人生 > >python解決ModuleNotFoundError No module named 'HTMLTestRunner'

python解決ModuleNotFoundError No module named 'HTMLTestRunner'

HTMLTestRunner是Python標準庫的unittest模組的擴充套件,無法通過pip安裝;

py2解決方法:

從http://tungwaiyip.info/software/HTMLTestRunner.html下載HTMLTestRunner.py並將檔案放到python2安裝目錄的Lib下,然後再次執行檔案,可成功執行!

py3解決方法:

總結:

第94行,將import StringIO修改成import io;

第539行,將self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO();

第642行,將if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,將uo = o.decode(‘latin-1‘)修改成uo = e;

第775行,將ue = e.decode(‘latin-1‘)修改成ue = e;

第631行,將print >> sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime))

下面是踩坑過程:

從http://tungwaiyip.info/software/HTMLTestRunner.html下載HTMLTestRunner.py並將檔案放到python3安裝目錄的Lib下,然後再次執行檔案

在HTMLTestRunner的94行中,是使用的StringIO,但是Python3中,已經沒有StringIO了。取而代之的是io.StringIO。所以將此行修改成import io

在HTMLTestRunner的539行中,self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

繼續執行程式碼,發現報異常如下:

前往644行修改程式碼:if cls not in rmap

繼續執行程式碼,又發現報異常如下:

前往769行修改程式碼: uo = e ; 同時將776行修改程式碼:ue = e

繼續執行,發現還報異常:

前往633行修改程式碼:print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime - self.startTime))

再次執行,程式碼執行成功,無異常!