pythonでコンソールウィンドウを隠すには?
私はPythonでIRCボットを書いています。
Linux用とWindows用のスタンドアローンバイナリを作りたいのですが、どうすればいいですか?そして、主にボットが起動したときにコンソールウィンドウを隠して、ユーザがウィンドウを見ることができないようにしたいです。
そのためにはどうしたらいいのでしょうか?
65
6
私はPythonでIRCボットを書いています。
Linux用とWindows用のスタンドアローンバイナリを作りたいのですが、どうすればいいですか?そして、主にボットが起動したときにコンソールウィンドウを隠して、ユーザがウィンドウを見ることができないようにしたいです。
そのためにはどうしたらいいのでしょうか?
拡張子を
.pyw
にして保存するだけです。これで、コンソールウィンドウが開かなくなります。Windowsでは、「実行可能モード」という概念はありません。Pythonのインストーラは自動的に.pyファイルをpython.exeと関連付け、Pythonファイルをダブルクリックするとスクリプトとして実行されるようにします。拡張子は.pywとすることもでき、その場合、通常表示されるコンソールウィンドウは抑制されます。
2.2.2節末尾の説明
linuxでは、そのまま実行すれば問題ありません。 Windowsでは、pythonwの実行ファイルを使用したい。
更新情報
なるほど、コメントの質問を理解すると、コマンドラインからbotを起動したコマンドウィンドウをその後消すにはどうしたらいいかということですね?
その通りだと思います。 いずれにせよ、これでターミナルを閉じることができます。
Unix系(Linux、macOS、BSDを含む)の場合
nohup mypythonprog &
を使用すると、プロセスを中断することなくターミナルウィンドウを閉じることができます。また、クラウド上で動作していて、シェルプロセスをぶら下げたままにしたくない場合は
exit` を実行することもできます。Windows システムの場合
プログラムを拡張子
.pyw
で保存すると、pythonw.exe
で開かれるようになります。シェルウィンドウはありません。例えば、
foo.py
があれば、foo.pyw
にリネームする必要があります。PythonインタープリターがインストールされているWindowsコンピューターでPythonスクリプトを実行することだけを行う場合は、保存したスクリプトの拡張機能を「.py」から「.pyw」に変換するだけでうまくいくはずです。
ただし、py2exeを使用してスクリプトを任意のWindowsマシンで実行されるスタンドアロンアプリケーションに変換する場合は、「setup.py」ファイルに次の変更を加える必要があります。
次の例は、Tkinterを使用して作成された単純なpython-GUIです。
上記のコードの「コンソール」を「ウィンドウ」に変更します。.
これにより、Tkinterで生成されたGUIのみが開き、コンソールウィンドウは開きません。
これはあなたのコンソールを隠します。 最初にこの行をコードに実装して、最初にコンソールの非表示を開始します。
いくつかの追加情報。 このスレッドの前半でMohsen Haddadiが投稿したwin32guiソリューションが必要な状況の場合:
python 361以降、win32gui& win32conはpython stdライブラリの一部ではありません。 それらを使用するには、pywin32パッケージをインストールする必要があります。 pipを介して可能になりました。
pywin32パッケージの背景情報の詳細は、https://stackoverflow.com/questions/6624672/how-to-use-the-win32gui-module-with-pythonです。
また、フォアグラウンドのウィンドウを誤って閉じないようにウィンドウを閉じている間に裁量権を適用するには、解像度を次の行に沿って拡張できます。