Pythonで作成したスクリプトを手軽に実行ファイル(exe)化できるPyInstallerは非常に便利ですが、「起動が遅い」「ファイルサイズが大きい」といった課題もよく指摘されます。特に配布や業務利用を考えると、起動速度の最適化は重要なポイントです。ここでは、PyInstallerの起動高速化のコツと、--onedir
オプションの活用方法について解説します。
PyInstallerの起動が遅くなる理由
PyInstallerには主に2つの配布形式があります。
- –onefile
すべてのファイルを1つの実行ファイルにまとめる形式。配布は簡単ですが、実行時に内部で一時フォルダへ展開・解凍するため、起動が遅くなるというデメリットがあります。 - –onedir
実行ファイルと必要なライブラリ・リソースを1つのディレクトリにまとめる形式。ファイル数は増えますが、展開処理が不要なため起動が速いのが特徴です。
–onefileと–onedirの起動速度比較
オプション | 起動速度 | 配布形態 | 備考 |
---|---|---|---|
–onefile | 遅い(数秒~数十秒) | 単一ファイル | 一時展開が発生 |
–onedir | 速い(1秒未満~数秒) | フォルダ配布 | 展開不要、起動が高速 |
- –onefileは、実行時にすべてのリソースを一時フォルダに解凍してからプログラムを起動します。そのため、ファイルサイズや依存ライブラリが多い場合、起動に5秒以上かかることも珍しくありません。
- –onedirは、すでに必要なファイルがディレクトリ内に展開されているため、ほぼ即時に起動できます。
起動高速化のためのポイント
- –onedirオプションを使う
配布時に多少ファイル数が増えても、起動速度を重視するなら–onedirが最適です。 - 不要なライブラリを除外する
--exclude
オプションで使わないライブラリを除外し、ファイルサイズと起動時間を削減できます。 - Anaconda環境を避ける
Anaconda環境は依存ライブラリが多くなりがちなので、シンプルなPython環境でビルドするのが望ましい。
まとめ
- PyInstallerの–onefileは配布が簡単だが、起動が遅くなる(一時展開処理のため)。
- –onedirを使うことで、起動速度を大幅に改善できる。
- 配布形態や用途に応じて、–onefileと–onedirを使い分けるのがベスト。
起動速度を重視するアプリケーションや、業務効率化ツールの配布には、–onedirオプションの活用をぜひ検討してみてください。
コメント