關(guān)于pyinstaller生成.exe程序報錯:缺少.ini文件的分析
使用指令:pyinstaller -F -w main.py
生成的.exe文件執(zhí)行報錯

看報錯信息,初步懷疑是生成的.exe不能執(zhí)行.ini配置文件。
將程序需要的.ini文件放到.exe同級目錄下,雖然還是執(zhí)行不成功,但是沒有上述報錯了;刪除同級目錄下面的.ini文件,上述報錯仍然存在,說明初步的判定成立,.exe執(zhí)行不成功與.ini配置文件有關(guān)系。
測試辦法
pyinstaller不加參數(shù)”-F"和“-w",執(zhí)行執(zhí)行指令:pyinstaller main.py
加不加“-F"和”-w"效果的詳細說明文章鏈接:http://www.dhdzp.com/article/183469.htm


命令行窗口顯示報錯信息如下

dist目錄下并沒有.ini配置文件,手動添加該文件,再運行main.exe程序,
新的報錯如下

上述報錯說模塊openpyxl執(zhí)行l(wèi)oad_workbook打開文件功能時報錯,但是在pycharm環(huán)境下運行main.py程序是ok的,不明白為什么生成.exe之后就無法打開.xlsx文件。
嘗試了好幾個.xlsx文件都這樣,懷疑是不是生成的.exe不能打開電腦加密的.xlsx文件?
在電腦上新建一個.xlsx文件,不對文件進行任何操作,使其處于未被加密狀態(tài),執(zhí)行.exe程序,和打開加密的.exe文件報錯對比如下,發(fā)現(xiàn)生成的.exe確實不能打開加密的文件:

上述報錯信息解釋如下
最上面的紅框框出來的報錯是打開的加密文件,可以看出來執(zhí)行到代碼的30行l(wèi)oad_workbook打開文件操作;
下面的紅框框出來的報錯是打開的沒有加密文件,可以看出來執(zhí)行到代碼的35行了,這個時候30行的load_workbook打開文件操作執(zhí)行ok通過了,是其他原因?qū)е碌膱箦e;
說明:生成的.exe確實不能打開加密的文件。
將文件解密后,.exe功能執(zhí)行ok。
同樣用解密的文件,使用指令:pyinstaller -F -w main.py 生成的.exe程序,即使放置了需要的.ini配置文件執(zhí)行結(jié)果也不是想要的(只顯示一個界面,點擊確認button后應(yīng)該彈出另外一個數(shù)據(jù)展示界面),但是不會報錯。原因未知。
使用"-n"指定生成的.exe的名稱,指令:pyinstaller main.py. -n ***
由于.exe實現(xiàn)的界面功能比較簡單,沒有在程序里面設(shè)置日志功能,當遇到操作不當引起bug時還是需要借助命令行窗口的顯示查找原因的,所以不使用"-w"參數(shù)取消顯示命令行窗口了。
附上pyinstaller的常見參數(shù)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Pycharm調(diào)用同級目錄下的py腳本bug
今天小編就為大家分享一篇淺談Pycharm調(diào)用同級目錄下的py腳本bug,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python中文分詞庫jieba(結(jié)巴分詞)詳細使用介紹
這篇文章主要介紹了Python中文分詞庫jieba(結(jié)巴分詞)提取詞,加載詞,修改詞頻,定義詞庫詳細使用介紹,需要的朋友可以參考下2022-04-04
django之靜態(tài)文件 django 2.0 在網(wǎng)頁中顯示圖片的例子
今天小編就為大家分享一篇django之靜態(tài)文件 django 2.0 在網(wǎng)頁中顯示圖片的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
解決Python 異常TypeError: cannot concatenate ''str'' and ''int''
這篇文章主要介紹了解決Python 異常TypeError: cannot concatenate 'str' and 'int' objects,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python?sklearn?中的?make_blobs()?函數(shù)示例詳解
make_blobs()?是?sklearn.datasets中的一個函數(shù),這篇文章主要介紹了Python?sklearn?中的?make_blobs()?函數(shù),本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-02-02

