はじめに
Pythonのプログラム[.py]が属人化しないようにするためexe化[.exe]した際のメモ。
Pythonのexe化にはいくつか方法がありますが、今回は簡易にできるPyInstallerを用います。
クイックスタート
ソースコードを編集せずにpipと下記コマンドでexe化できます。
これだけなので非常に簡単です。exe化だけならここまでで結構です。
後半にPythonコードでPyInstallerを記述する方法を紹介しているので興味があればご参照下さい。
pip install pyinstaller
pyinstaller yourprogram.py
オプション一覧
実行時に指定できるオプションがあります。
下記資料を参考に使用頻度の高いオプションをまとめています。
参考:[Using PyInstaller](https://pyinstaller.readthedocs.io/en/stable/usage.html
https://gist.github.com/devlights/2ea169b60063d81f0526eceebeb7a8c6)
生成オプション
オプション | 機能 |
---|---|
-n, --name | 生成ファイルの名前指定(defaultはスクリプト名) |
--specpath DIR | 生成フォルダの指定(defaultは現在のDIR) |
-D,--onedir | 1ディレクトリにまとめて出力する |
-F,--onefile | 1ファイルにまとめて出力する |
##OS固有オプション
オプション | 機能 |
---|---|
-w, --windowed, --noconsole | コンソールを非表示にする |
-i, --icon | プログラムのアイコン[.ico拡張子]を設定する |
##一般オプション
オプション | 機能 |
---|---|
--clean, --noconsole | ビルドする前にPyInstallerキャッシュを消去し、一時ファイルを削除する |
-y, --noconfirm | 出力ディレクトリを確認を求めずに置換する |
-v, --version | プログラムのバージョン情報を表示して終了する |
##その他オプション
オプション | 機能 |
---|---|
--exclude | 指定したモジュールまたはパッケージを無視する。複数回使用可能 |
##オプション使用例
pyinstaller yourprogram.py --exclude numpy,-v, -i data.icon
PythonコードからPyInstaller実行
公式ドキュメント参考
https://pyinstaller.readthedocs.io/en/stable/usage.html
import PyInstaller.__main__
PyInstaller.__main__.run([
'--name=%s' % package_name,
'--onefile',
'--windowed',
'--add-binary=%s' % os.path.join('resource', 'path', '*.png'),
'--add-data=%s' % os.path.join('resource', 'path', '*.txt'),
'--icon=%s' % os.path.join('resource', 'path', 'icon.ico'),
os.path.join('my_package', '__main__.py'),
])
#まとめ
Pythonのexe化ができるPyInstallerのメモでした。
2行でできるのが便利ですね。
ですが一点懸念もあります。下記を参考にするとexeファイルが大きい点や実行時間が掛かる問題があるようです。
exe化したい対象が処理速度を考慮していなければ是非お試しください.
【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
ご一読ありがとうございました。気になる点があれば編集リクエスト、コメントお願い致します。
良ければLGTMもお願いします。