在没有打开系统控制台的情况下调用子进程

时间:2010-12-04 23:14:07

标签: python subprocess

我试图从后台运行的进程启动一个wxPython应用程序(我已经转换为带有py2exe的exe)。

问题是当gui应用程序打开时,控制台窗口也会打开(c:\ windows \ system \ cmd.exe)

我查看了this question,其中Alex Martelli建议将creationflags的{​​{1}}参数设置为Popen,但这并没有解决我的问题。

另外我想知道是否有更好的方法在后台运行进程,目前我只是将脚本的扩展名更改为0x08000000,因为它没有GUI,所以它不是'可见......

这是调用子流程的行

pyw

py2exe脚本

    subprocess.Popen(args="%s"%comPort,bufsize=0,
                     executable="myFrozen_WxpythonApp.exe",
                     creationflags=0x08000000, shell=False)

更新:

正如我在回答这个问题时解释的那样,问题出在... 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) 电话中。

args参数中的第一个字符串应该是可执行文件的名称,然后可执行文件名后面可以跟任何需要传递给子进程的命令或数据。

1 个答案:

答案 0 :(得分:3)

在阅读subprocess.Popen

的文档后,我弄清楚我做错了什么

args参数中的第一个字符串应该是可执行文件的名称。我没有包含可执行文件的名称,因为我认为这是由executable参数处理的。