LoginSignup
5

More than 3 years have passed since last update.

posted at

updated at

PyInstaller備忘録 2行でPython[.py]の[.exe]化

はじめに

Pythonのプログラム[.py]が属人化しないようにするためexe化[.exe]した際のメモ。
Pythonのexe化にはいくつか方法がありますが、今回は簡易にできるPyInstallerを用います。

クイックスタート

参考:PyInstaller Quickstart

ソースコードを編集せずにpipと下記コマンドでexe化できます。
これだけなので非常に簡単です。exe化だけならここまでで結構です。
後半にPythonコードでPyInstallerを記述する方法を紹介しているので興味があればご参照下さい。

pip install pyinstaller
pyinstaller yourprogram.py

オプション一覧

実行時に指定できるオプションがあります。
下記資料を参考に使用頻度の高いオプションをまとめています。
参考:Using PyInstaller

生成オプション

オプション 機能
-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

sample.py
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もお願いします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5