Pythonスクリプトを配布するためのexe化モジュールPyInstallerまとめ



PyInstaller

付加コマンド

--onefile

最終的に吐き出されるファイルを、1つのexeファイルにバンドルする。

副作用として、

  • コマンド終了までの処理時間が長くなる。
  • exeファイルの起動までの動作が重たくなる。

等が挙げられる。

--noconsole

exeファイルの起動時に黒いコンソールを出現させなくする。
GUIを作っている場合など、コンソールでの情報表示が不要な場合に利用。

--add-data

png、jpg、ico、など各種画像ファイル、その他の非バイナリファイルをバンドルするためのコマンド。

specファイルを編集する方法もあるが、それはそれで色々面倒なので、ファイルが少なければコマンドで指定が楽。

--add-data <現在のファイルパス>;<バンドル後のファイルパス>
区切りにはセミコロンを使う。

プログラムのソースから参照している位置がずれない様に注意が必要。
色々考えるのが面倒なら直下配置 " . " をdist_pathに指定するのが無難。

使用例:

GUIを作ってexe化した場合など、iconなどを使っている場合でも、標準の動作では画像ファイルはバンドルされない。

そのままでは配布時に画像ファイルも別途合わせて配布ZIPに織り込む必要があるので、--add-dataを使ってexeファイルにバンドルする方が見栄えが良い。

--onefileを指定して画像をバンドルしたい場合は、

--onefileを指定した場合、スクリプトで画像などのリソースを読み込む際は、この関数に通して読み込む。

PyQtでアイコンを読み込む場合の例は以下の例のようにresource_path関数を通す必要がある。