Windows上使用--noconsole的pyinstaller无法正常工作
我有一个相对简单的图形界面应用程序(用wxPython做的),运行得很好。我在使用Windows 7。
当我用 pyinstaller
编译它时,加上 -w
(或者 --noconsole
或 --windowed
),然后运行这个程序,我能看到一个控制台窗口闪现了一下,然后就关闭了。结果这个图形界面应用程序根本不运行。
如果不加 -w 选项,就能生成一个带控制台窗口的正常应用程序。
我这里缺少了什么呢?
3 个回答
0
如果你在使用 subprocess.run()
,确保它的写法是这样的:
if os.name == 'nt':
subprocess.run(command, creationflags=subprocess.CREATE_NO_WINDOW)
要小心,subprocess.CREATE_NO_WINDOW
在非Windows系统上会报错。
8
我也遇到过同样的问题。于是我用了下面这个函数,替代了 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]
得到的是一样的哦 :) 这个方法在我的图形界面应用中效果很好。我用 pyinstaller --noconsole 打包成窗口应用...