基本上它都在标题中,当我从控制台(在Windows上)运行代码时,子进程在不打开另一个控制台的情况下运行,但是当我从cx_freeze'd应用程序运行代码时,另一个控制台会打开。
我发现这个旧线程被建议使用FreeConsole(),它会在屏幕上闪烁控制器以闪烁,但我最终可以忍受它,不幸的是,如果我理解正确它应该从子进程调用。< / p>
http://twistedmatrix.com/pipermail/twisted-python/2007-February/014738.html
我还在Windows上对整个spawnProcess进行重新分解时发现了这张票(7yo),但显然它从未发生过:
http://twistedmatrix.com/trac/ticket/2415
我无法控制子进程的代码,所以做一些事情遗憾的是不是一个选项,但即使我做了这个过程我正在产生它是一个控制台应用程序,我相信FreeConsole()无法被调用那里或过程将终止。
答案 0 :(得分:0)
这可能是Twisted中的错误,但可能是cx_Freeze
中的错误。
使用Python从GUI运行代码时会发生什么,但不涉及cx_Freeze
?如果安装了Python,只需将代码放入.pyw
文件并在资源管理器中双击它就可以测试。
如果在运行子进程时仍然弹出一个控制台窗口,那么这完全是Twisted中的一个错误,你应该这样做。 Eric在邮件列表消息中的回答是错误的;如果你想用spawnProcess
生成进程,他们绝对不应该弹出随机控制台窗口。
如果点击 - .pyw
启动方法不会导致控制台窗口弹出,那么它可能与cx_Freeze
构建的方式有关你的可执行文件,你可能想看看它。
在UNIX上,我们有一个特定于平台的usePTY
,因此我们可以使用特定于平台的spawnProcess
来扩展useConsole
,这会为Windows做类似的事情。 This later message in the thread建议实施策略,please file a ticket。让我们重做一切的票太雄心勃勃了,无法解决这个问题。