pyinstaller打包後運行exe 報錯:failed to execute script

環境:win7、pycharm2019.3.3 x64、Python3.8.1

注意:下文中的***代表你的主入口文件的名字

問題描述:在項目根目錄下通過 pyinstaller -F -w ***.py 命令打包後,在dist目錄下生成了***.exe文件,運行 ***.exe 文件後彈窗提示 【failed to execute>



解決步驟:

1.更改 pyinstaller -F -w ***.py 打包命令 為:pyinstaller -D ***.py 執行命令,在dist目錄下生成相應的目錄文件,在目錄下找到 ***.exe,通過cmd方式在此目錄下運行 ***.exe,顯示了報錯信息,比如:ModuleNotFoundError: No module named 'PyQt5',這是由於沒有把這個包打進來造成的

2.在dist的同級目錄找到build目錄,找到warn***.txt文件,裡面會記錄一些錯誤,如下圖:


這裡可以看到,PyQt5的庫沒有找到

分析:正常來說,如果pyinstaller是pip3安裝好的,那麼PyQt5應該也在同一個目錄下,應該不會出現找不到路徑的情況.所以說,有兩種情況,一種是pyinstaller的問題,一種是PyQt5問題

3.接下來我先使用--path 指定庫目錄,有一點需要注意:這裡用的是/作為目錄分隔符,而不是\\

改變後的命令:pyinstaller.exe --path D:/Python/Lib/site-packages/PyQt5/Qt/bin -Fw .\\***.py 重新打包之後,再次運行,報同樣的錯誤,看build目錄下的warn***.txt文件,還是同樣的,沒有找到PyQt5的庫

4.接下來我再指定本地庫的pyinstaller,重新執行 :D:\\Python\\Scripts\\pyinstaller -D ***.py 命令,再依據第2步操作,看一下warn***.txt文件,如下圖:


發現PyQt5已經成功導入了,說明之前的判斷是正確的,如果還有類似的其他報錯信息,按照此方式反覆去調整

5.最後調用 D:\\Python\\Scripts\\pyinstaller -Fw ***.py 命令成功打成一個exe的包