1

基本的にはすべてタイトルにあります。(Windows の) コンソールからコードを実行すると、別のコンソールを開かずに子プロセスが実行されますが、cx_freeze のアプリからコードを実行すると、別のコンソールが開きます。

FreeConsole() を使用するように提案されたこの古いスレッドを見つけました。これは、画面上のコンソールを点滅させますが、残念ながら、子プロセスから呼び出す必要があることを正しく理解していれば、残念ながらそれを受け入れることができます。

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

また、Windows での spawnProcess 全体のリファクタリングでこのチケット (7yo) を見つけましたが、どうやらそれは起こらなかったようです:

http://twistedmatrix.com/trac/ticket/2415

私は子プロセスのコードを制御できないため、残念ながらそこで何かを行うことはできませんが、プロセスを実行したとしても、それはコンソールアプリであり、FreeConsole() はそこで呼び出すことができなかったと思います。プロセスは終了します。

4

1 に答える 1

0

これは Twisted のバグかもしれませんが、 のバグかもしれませんcx_Freeze

Python を使用して GUI からコードを実行するとどうなりますcx_Freezeか? .pywPython がインストールされている場合は、コードをファイルに入れてエクスプローラーでダブルクリックするだけで、これをテストできるはずです。

サブプロセスを実行したときにこれでもコンソール ウィンドウがポップアップする場合、これは完全に Twisted のバグであり、そのようにファイルする必要があります。そのメーリング リスト メッセージでの Eric の答えは間違っています。プロセスを生成したい場合は、spawnProcessランダムなコンソール ウィンドウをポップアップするべきではありません。

クリックして.pyw起動する方法でコンソール ウィンドウがポップアップしないcx_Freeze場合は、実行可能ファイルの作成方法に問題がある可能性があり、それを確認することをお勧めします。

UNIX には、プラットフォーム固有のがあります。そのため、Windows に類似したことを行う プラットフォーム固有のでusePTY拡張できることは理にかなっています。スレッドのこの後のメッセージは、実装戦略を示唆しているため、チケットを提出してください。Let's-redo-everything チケットは野心的すぎて、この 1 つの問題を修正できません。spawnProcessuseConsole

于 2013-10-07T17:48:37.723 に答える