如何解決Pyinstaller打包運(yùn)行提示AttributeError
Pyinstaller是一款能將Python腳本打包成EXE可執(zhí)行文件的工具。與其他兩款類似的工具py2exe和cxfreeze相比,小編認(rèn)為Pyinstaller比較簡(jiǎn)單粗暴。然而,很多人在使用Py
Pyinstaller是一款能將Python腳本打包成EXE可執(zhí)行文件的工具。與其他兩款類似的工具py2exe和cxfreeze相比,小編認(rèn)為Pyinstaller比較簡(jiǎn)單粗暴。然而,很多人在使用Pyinstaller進(jìn)行打包時(shí)會(huì)遇到一個(gè)問(wèn)題:在python解釋器中運(yùn)行沒(méi)有任何問(wèn)題的腳本,但用Pyinstaller打包之后,無(wú)法運(yùn)行。那么為什么會(huì)出現(xiàn)這個(gè)問(wèn)題呢?該如何解決呢?接下來(lái),小編將手把手教大家如何解決這個(gè)問(wèn)題。
問(wèn)題原因分析
首先,讓我們看一下小編寫(xiě)的一個(gè)python腳本,功能相當(dāng)簡(jiǎn)單,用tkinter模塊創(chuàng)建窗口,然后調(diào)用showinfo顯示一個(gè)提示框。在解釋器上運(yùn)行是完全沒(méi)有任何問(wèn)題的。
接下來(lái),我們嘗試使用Pyinstaller進(jìn)行打包。在命令提示符中cd到腳本所在目錄,然后運(yùn)行Pyinstaller -F 腳本名。通常情況下,如果腳本能正常運(yùn)行,打包也應(yīng)該能成功。
然而,當(dāng)我們找到dist目錄并雙擊運(yùn)行程序時(shí),發(fā)現(xiàn)程序只是閃過(guò)而已。此時(shí),遇到這種一閃而過(guò)的問(wèn)題,我們無(wú)法看到命令行提示的錯(cuò)誤信息,應(yīng)該怎么辦呢?其實(shí)很簡(jiǎn)單,我們只需要在命令行下去運(yùn)行它就行了。在dist目錄下運(yùn)行生成的exe文件,此時(shí)可以看到錯(cuò)誤提示:
AttributeError: 'module' object has no attribute 'messagebox'
解決方法
現(xiàn)在讓我們回顧一下我們的代碼。有沒(méi)有只聲明了tkinter主模塊,但沒(méi)有聲明其下的messagebox子模塊呢?所以,遇到這樣的問(wèn)題,即"object has no attribute"提示,我們應(yīng)該去看看代碼。
聲明相關(guān)的模塊即可。在代碼中加入import 即可。
現(xiàn)在重新運(yùn)行經(jīng)過(guò)Pyinstaller -F打包后的程序,問(wèn)題肯定得到解決了。
至此,問(wèn)題解決完畢。希望本文對(duì)大家有所幫助。