建設我有pyinstaller exe文件後,有時在發生異常時,我可以在GUI中看到一個致命的錯誤:fatalerror imagePyinstaller:如何隱藏致命錯誤GUI在Python
我只是想隱瞞這一點。
PS:我用Pyinstaller與--windowed選項
非常感謝!
建設我有pyinstaller exe文件後,有時在發生異常時,我可以在GUI中看到一個致命的錯誤:fatalerror imagePyinstaller:如何隱藏致命錯誤GUI在Python
我只是想隱瞞這一點。
PS:我用Pyinstaller與--windowed選項
非常感謝!
當您的應用程序有未捕獲的異常時,PyInstaller的啓動/關閉代碼顯示此對話框。抑制它的最好方法是在Python代碼中捕獲異常並正常退出應用程序(通過調用sys.exit()
或提高SystemExit
)。這可以通過圍繞main()的頂級try...catch
或圍繞啓動事件循環的調用完成。
我還建議創建一個GUI對話框,在文本框中顯示致命異常的回溯,以方便用戶向您報告錯誤。
我有一個涉及subprocess.Popen的根本原因類似的問題,如果你不使用這個函數(或類似的東西),那麼這個答案不太可能有幫助。
我有一個類似的問題,試圖用pyinstaller構建我的.exe。我正在使用--noconsole標誌以及--onefile標誌與pyinstaller並得到「致命錯誤!」消息「返回-1」,每當我試圖執行結果.exe文件。我的.exe會用--onefile標誌建立工作,但是使用--noconsole標誌的任何組合都會返回錯誤,導致我相信這是我的問題的根源。
一個小挖之後,我找到了這樣的回答:
Python subprocess.call() fails when using pythonw.exe
這似乎表明該問題使用subprocess.Popen與pythonw.exe代替python.exe時使用的管道。對於我來說,使用--noconsole標誌的pyinstaller在構建.exe時會使用pythonw.exe而不是python.exe,這對我來說似乎合乎邏輯,這使得我相信這可能適用於我的問題。
爲了測試這個我通過代碼重構來輸出我的Subprocess.Popen調用結果到文件,然後讀入並刪除文件。這解決了我的「致命錯誤!」問題和其他一切進展良好。
原文:
process = subprocess.Popen('cmd /c whoami', stdout=subprocess.PIPE)
user = process.communicate()[0].decode('ascii').strip()
重構:
pro = subprocess.Popen('cmd /c whoami > "{0}"'.format(file_name))
pro.wait()
with open(file_name, 'rt') as file:
user = file.read().strip()
os.remove(file_name)
你的意思是,'.EXE'文件中使用pyinstaller,生成在執行時發生錯誤產生的?或者你的意思是說,在使用pyinstaller構建'.EXE'的過程中,你會得到上述錯誤? –
它在運行時。的.EXE。 當運行時發生異常時,此窗口顯示出來......但我不希望出現這種情況。 –
然後我認爲你必須編輯python代碼。在代碼中必須有一個地方配置這個異常...找到它並修改異常。 –