Windows上的pyinstaller与--noconsole简直无法工作

时间:2014-06-27 15:20:06

标签: python windows wxpython pyinstaller

我有一个相当简单的GUI(wxPython)应用程序,并且工作得很好。我使用Windows 7.
使用带有pyinstaller(或-w--noconsole)的--windowed进行编译并运行它时,我可以看到一个毫秒的控制台窗口然后关闭。 GUI应用程序不会运行 在没有-w的情况下进行编译将生成带有控制台窗口的工作应用程序。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

我猜你是在某种程度上启动一个子程序,当Python在没有控制台窗口的情况下运行时会搞砸。我不得不解决与此相关的三个问题:

  1. multiprocessing模块在​​生成工作进程时需要set an environment variable
  2. subprocess模块需要explicitly handle stdinstdoutstderr,因为没有为要继承的子进程设置标准文件句柄。
  3. 除非tell it not to
  4. ,否则子流程会创建一个控制台窗口

答案 1 :(得分:0)

有同样的问题。使用以下函数代替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 ...