Python GUIアプリをexe化する方法を説明する。exe化で生成されるファイル拡張子はMacの場合は.app、Windowsの場合は.exeだが、本書では便宜上両者ともexeファイルと呼ぶ。下記アプリを例に説明する。
今回exe化するPythonファイルはyoshihiko0.py。
yoshihiko0.pyのコードはこちらの記事を参照。
環境
exe化するためにはPyInstallerを使用する。インストールしていない場合はpipでインストールする。
pip install pyinstaller
exe化方法
Macの場合
Macの場合はターミナルを開きyoshihiko0.pyが有るディレクトリに移動し下記を入力する。
python3 -m PyInstaller yoshihiko0.py --noconsole --onefile --exclude-module matplotlib
Windowsの場合
Windowsの場合はコマンドプロンプトを開きyoshihiko0.pyが有るディレクトリに移動し下記を入力する。
pyinstaller yoshihiko0.py --noconsole --onefile --exclude-module matplotlib
オプション
–noconsole | exeファイル実行時にコンソールが表示されないようにする |
–onefile | ファイルを単体で実行可能にする |
–exclude-module [モジュール名] | 指定したモジュールをexe化に含めないという意味。PyInstallerはPython環境にインストールされているモジュールは例えexe化するアプリで使用していなくても一緒にexe化してしまうためexeファイルのサイズが大きくなってしまう。–exclude-moduleで指定したモジュールはexe化に含まれなくなるのでexeファイルのファイルサイズを小さくすることができる。複数指定したい場合は–exclude-module [モジュール名] –exclude-module [モジュール名]と続けて入力する。 |
実行結果
exeファイル
実行が終了するとbuildフォルダ、distフォルダ、.specファイルが生成され、distフォルダの中にexeファイルが生成される。
このexeファイルは単体で動作するので、exeファイルだけ残してその他(buildフォルダ、distフォルダ、.specファイル)は削除してしまっても構わない。例えばデスクトップにexeファイル単体だけ移動しても実行可能である。
exeを配布したいとき
他の人に配布したい場合はexeファイルだけ配布すればよい。
コマンド入力自動化
batファイル化することでコマンド入力を自動化できる。
Macの場合
1. テキストエディタで以下を記載しmake_exe.commandというファイル名で保存する。
MY_DIRNAME=$(dirname $0)
cd $MY_DIRNAME
python3 -m PyInstaller yoshihiko0.py --noconsole --onefile --exclude-module matplotlib
・1行目の意味:commandファイルが有るディレクトリを取得する。
・2行目の意味:そのディレクトリに移動する。
・3行目の意味:exe化する。
2. yoshihiko0.pyが有るフォルダにmake_exe.commandを置く。
3. このままではパーミッションエラーになるためターミナルを立ち上げmake_exe.commandが有るフォルダに移動し以下コマンドを入力することでパーミッションを書き換える。
chmod u+x make_exe.command
4. exe化を行う際はmake_exe.commandをダブルクリックするだけ良い。
Windowsの場合
1. テキストエディタで以下を記載する。
pyinstaller yoshihiko0.py --noconsole --onefile --exclude-module matplotlib
2. yoshihiko0.pyが有るフォルダにmake_exe.batというファイル名で保存する。
3. exe化を行う際はmake_exe.batをダブルクリックするだけで良い。
まとめ
Python GUIアプリをexe化する方法を説明した。
コメント