【Python】PyInstallerでPythonスクリプトをexe化

pyinstaller
スポンサーリンク
スポンサーリンク

Pythonスクリプトをexe化できる PyInstallerの使い方を解説します。
この記事を読めば、PyInstallerの基本的な操作方法をマスターできるようになります。

スポンサーリンク

PyInstallerとは

PyInstallerは、Pythonスクリプトをexeファイル(実行ファイル)に変換するライブラリです。
exe化することでPythonがインストールされていないPCでもスクリプトを実行する事が可能になります。

同様のライブラリはいくつかありますが、PyInstallerは広く使われているメジャーなライブラリです。

【注意点】
・Pythonは3.7以上のバージョンが必要(2023年7月現在)
・Windows、macOS、Linuxに対応。
 ただしPyInstallerパッケージを作成したOSと同じOS上でしか動作しない。
・64bit OS環境で作成したexeファイルは32bit OSでは利用不可。
・32bit OS環境で作成したexeファイルは32bit/64bitの両方で利用可。

使用ライブラリ

PyInstallerライブラリをインストールする必要があります。

ライブラリ :PyInstaller(公式ドキュメント
インストール:必要

ライブラリのインストール

pip コマンドで PyInstaller ライブラリをインストールします。
・関連記事:Pythonライブラリのインストール(pipの使い方)

Successfully installed (関連ライブラリ) pyinstaller-*.*.* と表示されればインストールは成功です。

exeファイル化

Windowsの場合、コマンドプロンプトでメインとなるPythonスクリプトがあるディレクトリに移動して、pyinstallerコマンドを実行します。

pyinstaller スクリプトファイル名

「C:\test\test.py」をexe化する場合

実行すると10818 INFO: Building COLLECT COLLECT-00.toc completed successfully. と表示され、「C:\test」配下に 「build」と「dist」ディレクトリが作成されます。

この「dist」の中のスクリプトファイル名のディレクトリ内にexeファイルが作成されています。
今回の場合「C:\test\dist\test\test.exe」となります。


オプション

PyInstallerでよく使うオプションを紹介します。

オプション説明
–onedir (-D)出力を1ディレクトリにまとめる
–onefile (-F)関連するファイルを1つにまとめてexeファイルを生成
(distディレクトリにexeファイルのみ作成)
–noconsole (-w)コンソール(コマンドプロンプト)の黒い画面を非表示にする
–cleanビルド前に前回のキャッシュ、出力ディレクトリを削除
–noconfirm (-y)確認メッセージを表示せずに、出力先をディレクトリを置き換え

複数のオプションを指定したい場合はスペースでつなぎます。


1ファイル化したexeは、1ファイル化していないexeよりも起動が遅いようです。
また、seleniumを含むpythonファイルは1ファイル化できないようです。


以下のサンプルプログラムをsample.pyとして保存後、PyInstallerを実行してみてください。

保存ディレクトリの「dist」内に保存された「sample.exe」を実行すると以下のようなアプリが実行できます。

このプログラムでは、tkinterというGUIアプリを作成するライブラリを使用しています。
tkinterについては以下の記事を参考にしてみてください。
・関連記事:PythonでGUIアプリを作成する(tkinter)

実行エラー(Pathlib互換)

PyInstallerの実行時に以下のようなエラーが出ることがあります。
The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller.

これはPathlibライブラリとの互換性が無いことにより発生するようです。

対処方法は①Pathlibライブラリを削除する もしくは ②Pathlibと互換性のあるバージョンをインストールする の2つの方法があります。

①Pathlibを削除(exe化完了後にpipで再インストール)
python -m pip uninstall pathlib

②Pathlibと互換性のあるバージョンをインストール(ver5.7以下)
python -m pip install pyinstaller==5.7

exe化したファイルを自動実行する

exe化したファイルはタスクスケジューラで自動実行させることができます。

以下リンクの、タスクスケジューラの設定を参考に設定してみてください。
【Win11】Pythonスクリプトを自動実行する方法