簡體   English   中英

帶有--noconsole的Windows上的pyinstaller無法正常工作

[英]pyinstaller on Windows with --noconsole simply won't work

我有一個相當簡單的GUI(wxPython)應用程序,並且運行良好。 我正在使用Windows 7。
當使用帶有-w (或--noconsole--windowed )的pyinstaller編譯它並運行它時,我可以看到一個控制台窗口達一毫秒,然后將其關閉。 GUI應用程序將無法運行。
不使用-w進行編譯將產生帶有控制台窗口的可運行應用程序。

我在這里想念什么?

我猜想您正在以某種方式啟動一個子進程,當Python在沒有控制台窗口的情況下運行時,該子進程會陷入混亂。 我不得不解決與此有關的三個問題:

  1. multiprocessing模塊在生成工作進程時需要設置環境變量
  2. subprocess模塊需要顯式處理 stdinstdoutstderr ,因為沒有為子流程繼承設置標准文件句柄。
  3. 子進程將創建一個控制台窗口,除非您不告訴它

有同樣的問題。 使用以下函數代替subprocess.Popen()

def popen(cmd):
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    process = subprocess.Popen(cmd, startupinfo=startupinfo, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    return process.stdout.read()

返回類型與您從Popen().communicate()[0] :)獲得的返回類型相同:)非常適合我的GUI應用程序。 用pyinstaller窗口--noconsole ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM