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ライブラリをインストールする必要があります。
インストール:必要
ライブラリのインストール
pip
コマンドで PyInstaller
ライブラリをインストールします。
・関連記事:Pythonライブラリのインストール(pipの使い方)
1 | python -m pip install pyinstaller |
Successfully installed (関連ライブラリ) pyinstaller-*.*.* と表示されればインストールは成功です。
exeファイル化
Windowsの場合、コマンドプロンプトでメインとなるPythonスクリプトがあるディレクトリに移動して、pyinstallerコマンドを実行します。
「C:\test\test.py」をexe化する場合
1 2 | cd c;\test pyinstaller test.py |
実行すると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 | pyinstaller test.py --onefile --noconsole --clean |
1ファイル化したexeは、1ファイル化していないexeよりも起動が遅いようです。
また、seleniumを含むpythonファイルは1ファイル化できないようです。
以下のサンプルプログラムをsample.pyとして保存後、PyInstallerを実行してみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # ボタンをクリックすると現在日時を表示するプログラム from tkinter import * from tkinter import messagebox import datetime def btn_click(): now = datetime.datetime.now() dt = now.strftime('%Y/%m/%d %H:%M:%S') text.set(dt) root = Tk() root.title('sample') root.geometry('250x100') text = StringVar() button = Button(root, text='現在日時表示', command=lambda:btn_click()) label = Label(root, textvariable=text, font=(14)) button.pack(pady=10) label.pack(pady=10) root.mainloop() |
保存ディレクトリの「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スクリプトを自動実行する方法