[python]pythonスクリプトを実行可能ファイルに変換する方法(PyInstaller)

python
スポンサーリンク

pythonスクリプトを実行可能ファイルに変換する方法(PyInstaller)

はじめに

pythonスクリプトを実行可能ファイル(.exeファイル)にする方法はいくつか存在し、pythonの公式ドキュメントには次のものが紹介されています。

Nuitka (Cross-platform)
PyInstaller (Cross-platform)
PyOxidizer (Cross-platform)
cx_Freeze (Cross-platform)
py2app (macOS only)
py2exe (Windows only)

https://docs.python.org/ja/3.13/faq/programming.html

その中でも、比較的簡単かつよく紹介されている「PyInstaller」を使用してみます。

開発環境

OS : Windows 11 Pro
Python:3.13.2
使用ライブラリ:PyInstaller(6.12.0)

実行ファイル化について

メリット

✔️配布するのに便利
実行ファイルにして他人に配布するとき、同じOSであればプログラムを実行できます。自己完結型でアプリが動作するため、Python がインストールされていない PC や、別バージョンの Python がインストールされていても関係なく動作します。
※ただし、64bitOSで作成した実行ファイルは、32bitOSでは正しく動作しません。(逆はOK。)

デメリット

ファイルサイズが大きくなる
スクリプトの実行に必要なすべてのモジュールとライブラリを収集し、スクリプトとともに 1 つのフォルダーに配置するか、オプションで 1 つの実行可能ファイルに配置するため、スクリプトファイル単体に比べてサイズが大きくなります。

❌アンチウイルスソフトに誤検知される場合がある
アンチウイルスソフトにウイルスとして扱われる場合があります。作成時の対策は難しく、誤検知したアンチウイルスソフトで例外登録してもらうなどの対策が必要です。

使用方法

注意事項

PyInstaller は、Windows、macOS、Linuxでテストされていますが、クロスコンパイラではありません。Windows用で動作する実行ファイルを作成する場合は、Windowsで作成する必要があります。

インストール

pipを利用してインストールするのが簡単です。
Windowsのコマンドプロンプトを起動して、実行します。

pip install pyinstaller

過去にインストールしたことがあり、最新バージョンにする場合。

pip install --upgrade pyinstaller

インストール確認。バージョンが表示されればOKです。

pyinstaller --version

実行可能ファイルの作成

python スクリプトがあるフォルダへ移動し、実行します。

pyinstaller --onefile myscript.py

正常に完了すると、[dist] フォルダの中に exe ファイルが作成されます。

良く利用するオプション

良く利用するオプションのみ記載します。その他については「公式ドキュメント」を参照ください。

1ファイル化
-F、 --onefile

1 つのファイルにバンドルされた実行可能(exe)ファイルを作成します。
このオプションを指定しない場合、実行可能(exe)ファイルのみでは正しく動作せず、[dist] フォルダの中に作成された [_internal] というフォルダも必要になります。

コンソール非表示化
-w, --windowed, --noconsole

Windows および macOS: 標準 I/O 用のコンソール ウィンドウを表示しないようにします。
Windows では、最初のスクリプトが ‘.pyw’ ファイルの場合、このオプションは自動的に設定されます。

アイコン指定
-i, --icon <FILE.ico or FILE.exe,ID or FILE.icns or Image or "NONE">

実行ファイルにアイコンを適用します。
プラットフォーム形式ではないイメージ ファイル (Windows では ico、Mac では icns) が入力された場合、PyInstaller は Pillow を使用してアイコンを正しい形式に変換しようとします (Pillow がインストールされている場合)。

おわりに

PyInstaller を使用することで気軽に配布できるようになります。
デメリットでも取り上げたアンチウイルスソフトの誤検知がなんとかなれば良いのですが。

コメント

タイトルとURLをコピーしました