【发布时间】:2010-12-04 23:14:06
【问题描述】:
我正在尝试从后台运行的进程启动一个 wxPython 应用程序(我已使用 py2exe 转换为 exe)。
问题在于,当 gui 应用程序打开时,控制台窗口(c:\windows\system\cmd.exe)也会打开
我查看了 this question,其中 Alex Martelli 建议将 Popen 的 creationflags 参数设置为 0x08000000,但这并没有解决我的问题。
我还想知道是否有更好的方法在后台运行进程,目前我只是将脚本的扩展名更改为pyw,因为它没有 GUI,所以它不可见...
这是调用子进程的行
subprocess.Popen(args="%s"%comPort,bufsize=0,
executable="myFrozen_WxpythonApp.exe",
creationflags=0x08000000, shell=False)
py2exe 脚本
...
options = {'py2exe': {'compressed': 3,
'optimize': 2,
'excludes': excludes,
'packages': packages,
'dll_excludes': dll_excludes,
'bundle_files': 1,
'dist_dir': 'dist',
'xref': False,
'skip_archive': False,
'ascii': False,
#'packages': packages,
'custom_boot_script': '',
}
}
setup(options=options, windows=["app.pyw"], zipfile=None, data_files=data_files)
更新:
正如我在回答这个问题时所解释的,问题出在subprocess.Popen 电话中。
args 参数中的第一个字符串应该是可执行文件的名称,然后可执行文件名称后面可以跟任何需要传递给子进程的命令或数据。
【问题讨论】:
-
请在您的代码块中添加一两个换行符。
-
这与子进程和主脚本的控制台窗口无关。弹出的是
WxpythonApp的控制台窗口(当你单独启动它时它应该仍然会弹出)。 -
@delnan:我希望事情就这么简单。使用
py2exe转换为exe 时设置了窗口parameter,如果我手动执行应用程序,即双击它,控制台窗口不会打开.. -
是的……虽然很烦人!
-
你能告诉我们py2exe脚本的相关部分吗?
标签: python subprocess