2013-10-06 21 views
1

基本上它都是在標題中,當我從控制檯(在Windows上)運行代碼時,子進程在不打開另一個控制檯的情況下運行,但是當我從另一個控制檯將打開cx_freeze的應用程序。twisted reactor.spawnProcess打開不需要的控制檯時,cx_freeze'd

我發現這個舊線程在哪裏被建議使用FreeConsole(),它會閃爍屏幕上的控制檯閃爍,但我可以最終與它住在一起,不幸的是,如果我理解正確,它應該從子進程調用。

http://twistedmatrix.com/pipermail/twisted-python/2007-February/014738.html

我也發現這個票(7yo)在Windows上整個spawnProcess的重新分解,但顯然它從來沒有發生過:

​​

我有過的代碼無法控制但是即使做了這個過程,我產生了一個控制檯應用程序,我相信FreeConsole()不能在那裏被調用,或者過程會終止。

回答

0

這可能是Twisted中的一個錯誤,但可能是cx_Freeze中的一個錯誤。

當您使用Python從GUI運行代碼但沒有涉及cx_Freeze時會發生什麼?如果你安裝了Python,你應該能夠測試這個,只需將你的代碼放入.pyw文件並在Explorer中雙擊即可。

如果在運行子進程時仍然彈出控制檯窗口,那麼這完全是Twisted中的一個錯誤,您應該將其歸檔。 Eric在該郵件列表消息中的回答是錯誤的;如果你想用spawnProcess產生進程,他們絕對不應該彈出隨機控制檯窗口。

如果點擊-ON-A- .pyw推法原因的控制檯窗口彈出,那麼它可能是一些有關的方式cx_Freeze構建了你的可執行文件,你可能想看看它。

在UNIX上,我們有一個特定於平臺的usePTY,所以它使我們能夠擴大spawnProcess與特定於平臺的useConsole會做一些類似的Windows意義。 This later message in the thread建議實施策略,所以please file a ticket。 let's-redo-everything ticket太複雜了,無法解決這個問題。

+1

我可以證實cx_freeze沒有做錯任何事,即使使用pythonw衍生出一個控制檯窗口,在窗口上產生一個用於生成過程的useConsole標誌也會很棒,我會提交一張票。謝謝 – gianmt

+0

好,很酷。感謝您消除這種複雜性。另外,請在此張貼鏈接,以便其他人可以在將來輕鬆找到它! – Glyph

+0

當然,這裏是鏈接https://twistedmatrix.com/trac/ticket/6781 – gianmt