Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【python】実行時に表示されるコンソールウインドウを非表示にする方法


Pythonのプログラムをコードエディタなどを使用して一通り作成したあとにはPythonファイルをダブルクリックして実行してみたり、EXE化して動作確認する、配布のためなどにEXE化して渡すなどの作業が必要となります。

 

Pythonでの実行ファイル(EXEファイル)作成手順については以下のような過去記事で説明してきました。

 

 

kuku81kuku81.hatenablog.com

 

 

 

目次

 

このように、Pythonファイルをダブルクリックして実行したり、EXE化しての動作確認、EXE化して配布する時などには、通常、黒いコンソールウインドウが自動的に立ち上がって実行されます。

 

デバッグ時には色々なメッセージ表示を見ながら動作確認するということで問題ないかもしれませんが、最終形態ではこのコンソール自体を表示させたくないというような場合が起こります。

 

そのような場合に、コンソールを非表示にする方法を以下に説明します。

 

 

拡張子を変更する方法

 

コンソールを非表示にする方法の1つに、拡張子をpyからpywに変更するというものがあります。

 

Pythonファイル名.py→Pythonファイル名.pyw

 

と変更することでコンソールが非表示になります。

ただし、これはpyファイルをダブルクリック起動の場合はよかったのですが、EXE化したファイルを起動したものではコンソールウインドウが表示されました。

 

 

pyinstaller によるEXE化時のオプション指定方法

 

 

pyinstallerでEXE化する方法については先程の過去記事でも記載しましたが、

 

pyinstaller ファイル名

(ファイル名:*****.py)

 

にて作成します。

コンソールを非表示にする場合には、これにオプションとして--noconsoleを追加します。

 

pyinstaller ファイル名 --noconsole

(ファイル名:*****.py)

 

のように記載します。

EXEファイルを1つにまとめる場合、オプションとして、

--onefile

を追加しますが、参照したサイトによっては、

--onefileと--noconsole

は併用しない方がいいと記載してあります。

EXEファイルの実行時にエラーが起きやすくなるのでということのようです。

 

これがうまくいかなかった場合、もう1つは、オプションに-wを追加するというものです。

 

pyinstaller ファイル名 -F -w

 

-Fは--onefileと同じ意味合いで、EXEファイルを1ファイルにするものです。

その次の、-wが--noconsoleと同じ意味合いでコンソールウインドウを非表示にするオプションです。

 

プログラム上への追記指定による方法

 

これ以外の方法としては、Pythonのプログラム上に追記する方法があります。

 

from selenium import webdriver
import os
from selenium.webdriver.chrome import service as fs
from subprocess import CREATE_NO_WINDOW

path_driver = os.getcwd()+'\msedgedriver.exe'
# ドライバー指定でEdgeブラウザを開く
edge_service = fs.Service(executable_path=path_driver)
edge_service.creationflags = CREATE_NO_WINDOW
driver = webdriver.Edge(service=edge_service)

driver.get('https://www.google.com/')

 

プログラム例としては上記のようです。

4行目でCREATE_NO_WINDOWをインポートしており、

それを、7行目あたりの

edge_service.creationflags = CREATE_NO_WINDOW

でcreationflags に指定しています。

この、CREATE_NO_WINDOWがコンソールウインドウ非表示指定ということです。

最後にドライバーに、

driver = webdriver.Edge(service=edge_service)

として渡しています。

 

ただし、これらはそれぞれ環境?などによりうまくいく場合と行かない場合があるようです。

 

 

また、PythonSeleniumの活用に必要となりそうな内容についてこれまで記載してきた記事を一覧として以下にまとめましたのでよかったらご参照ください。

 

kuku81kuku81.hatenablog.com

 

 

 

関連記事:

【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録

 

【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録

 

【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録

 

【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録

 

【Python】キー入力によるプログラム終了処理、ループを抜けて次の処理へ移行する処理 - Django Girls and Boys 備忘録

 

【PythonでのExcelファイル読み書き方法】ファイルオープンしているファイル(アクティブファイル)への書込方法 - Django Girls and Boys 備忘録

 

【Python Selenium】ブラウザ用ドライバーのダウンロードとインストール - Django Girls and Boys 備忘録

 

【PythonからWeb操作】selenium、各ブラウザ用ドライバーの最新バージョン確認、ダウンロード場所 - Django Girls and Boys 備忘録

 

【Python Selenium】新規ウインドウ追加時のウインドウ切替方法 - Django Girls and Boys 備忘録

 

【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録

 

【Python Selenium】新規ウインドウ(新規タブ)追加時のウインドウ切替方法(追加ハンドルをハンドル差異比較にて取得) - Django Girls and Boys 備忘録

 

【python】実行時に表示されるコンソールウインドウを非表示にする方法 - Django Girls and Boys 備忘録