こんにちは、挑戦するエンジニア のり ですよ。
みなさんは、Pythonのプログラムをみんなに配布したり、
ほかのPCで実行させたりしたいと思ったことありませんか?
PythonはPCに実行環境がインストールされていないと、通常は動かすことが出来ません。
しかし、PyInstallerを使用してexe形式にすれば、実行環境をインストールしていないPCでも、
Pythonのプログラムを動かすことが出来ます。
今回は、Pythonで書いたプログラムをexe形式にする手順を解説します。
始めに
この記事では、Pythonのプログラムをexe形式に変換する方法を解説します。
この記事を読んでいただくことで、PyInstallerを使ったexe形式への変換方法を知っていただくことが出来ます。
筆者の環境(Windows11 22H2、Python3.11)での手順を紹介します。
また、PyInstallerは無料で使うことが出来るプログラムです。
ぜひ、挑戦してみてください!
PyInstallerで出来ること
PyInstallerで出来ることは、ひとつです。
ズバリ、Pythonのプログラムを、exe形式(実行形式)に変換することです。
C言語やjavaなど、他のプログラムで行うコンパイルに似ています。
しかし、Pythonは環境があればコンパイル無しで動作させることが可能なプログラムです。
本質的には、コンパイルとは異なるかもしれません。
PyInstallerは、Pythonのプログラムをexe形式(実行形式)に変換することが出来る。
それでは、PyInstallerの使い方について見ていきたいと思います。
PyInstallerの準備
PyInstallerを使うには準備が必要です。
Pythonがインストールされている環境で次のコマンドを実行して
PyInstallerをセットアップしていきます。
まずはコンソールから、pipコマンドのアップデートを行うコマンドを入力します。
python -m pip install --upgrade pip
続いてPyInstallerをインストールします。
pip install pyinstaller
PyInstallerがインストール出来たか、バージョン情報を表示して確認します。
pyinstaller -v
コンソールにバージョンの数字が表示されれば成功です。
PyInstallerは、pipコマンドでインストールできる。
次は、exe形式への変換手順です。
PyInstallerでexe形式への変換
PyInstallerを実行して、exe形式のファイルを作成します。
コマンドを実行すると2つのサブフォルダが作成されるため、作業用のフォルダにPythonのプログラムソースをコピーすることをお勧めします。
次の画像は、作業用のフォルダにPythonのプログラムソースを格納した例です。
コンソールから、次のコマンドを実行します。
pyinstaller [Pythonのプログラムファイル名]
※実行例
pyinstaller form_sample.py
次の画像は、コマンドプロンプトでのPyInstaller入力例です。
コマンドが成功すると、出力されるメッセージ最後に「successfully.」と表示されます。
実行後、作業用のフォルダに次のフォルダ、ファイルが作成されます。
・buildフォルダ
・distフォルダ
・.specファイル(例:form_sample.spec)
配布用の資産はdistフォルダにまとめられます。
このdistフォルダの配下にできるプログラム名のフォルダ配下にexeファイルが作成されており、
それを実行することでプログラムを実行することが出来るのです。
配布するときは、distフォルダの配下にできるプログラム名のフォルダを、まるごと配布する必要があります。
PyInstallerコマンドで、配布用の資産フォルダが作成される。
次は、知っていると便利なオプションの紹介です。
PyInstallerのオプション
PyInstallerのヘルプを表示する
PyInstallerのヘルプを表示します。
主にコマンドの入力形式、オプションなどをコンソールに表示します。
このオプションを指定した時、表示のみでPyInstallerは終了します。
※コマンドオプション
--help
※コマンドオプション(短縮)
-h
PyInstallerのバージョンを表示する
PyInstallerのバージョンを確認することができます。
このオプションを指定した時、表示のみでPyInstallerは終了します。
※コマンドオプション
--version
※コマンドオプション(短縮)
-v
確認を求めずに出力フォルダを置き換える
通常、PyInstaller実行時に出力フォルダが存在する場合、中身を置き換えてよいか警告が表示されます。
置き換える場合、警告に対して”y”を入力する必要があります。
その警告を表示しないで、中身を置き換えるよう指示するオプションがあります。
※コマンドオプション
--noconfirm
※コマンドオプション(短縮)
-y
実行時にコンソール画面を表示しない
フォームを表示するGUIのプログラムなど、実行時にコンソール画面を表示してほしくないプログラムがあります。
そのコンソール画面を表示しないようにするオプションがあります。
※コマンドオプション
--noconsole
※コマンドオプション(短縮)
-w
キャッシュをクリーンアップして一時ファイルを削除する
実行時に、PyInstallerキャッシュをクリーンアップして、一時ファイルを削除します。
PyInstallerを何度も実行する場合、キャッシュや一時ファイルが原因で思うようにexe形式のファイルが作成されないと困りますよね。
ぼくの場合、コマンドを実行するときには、このオプションを付けるようにしています。
※コマンドオプション
--clean
プログラムをひとつのファイルのファイルにまとめる
PyInstallerでは、通常フォルダごと配布できるように実行資産が作成されます。
それを一つのexeファイルにまとめることができます。
ただし、まとめるため、exeファイルの容量が大きくなります。
それだけでなく、プログラムの実行自体もものすごく時間がかかるようになります。
これは、exeファイルが大きくなるため、実行プログラムのロードに時間がかかるようになると推測されます。
ですので、このオプションの利用はお勧めできません。
※コマンドオプション
--onefile
※コマンドオプション(短縮)
-F
プログラムをひとつのファイルのファイルにまとめると、プログラムの開始が遅くなる。
オプションの指定例
コマンドオプションを指定してPyInstallerを実行する場合、次の例を参考にしてください。
pyinstaller --noconfirm --noconsole --clean form_sample.py
次は、PyInstallerを実行した環境と配布先についてです。
PyInstallerの実行環境と配布先
Windows環境でPyInstallerを実行して、配布用のexe形式のファイルを作成した場合、それはWindowsでしか動作しません。
Windows環境で作成したexe形式のファイルは、macOSやUNIXでは使用できないということです。
複数の OS (Windows と macOS の両方など) に配布する必要がある場合、各 OS にPyInstallerをインストールし、それぞれ個別に配布用のファイルを作成することが必要となります。
配布先が明確なのであれば、PyInstallerを実行する環境を選択する際、配布先のPCと出来るだけ近い環境にすることをお勧めします。(多少、許容範囲はあるようです・・・)
注目するポイントは、次の通りです。
・システムのビット数(64ビットなど)
・OSのエディション(Windows11 Homeなど)
・OSのバージョン(22H2など)
PyInstallerを実行する環境と、プログラムを配布する環境のチェックが必要。
次は、PyInstallerが対応するPythonのバージョンについてです。
PyInstallerの対応バージョン
PyInstallerはPythonのバージョンによって、対応していないものがあります。
対応状況は、少々面倒ではありますが、下記のサイトから確認することが出来ます。
変更履歴
PyInstallerの変更履歴は、こちら。
https://pyinstaller.org/en/stable/CHANGES.html
PyInstallerのドキュメントについて
今回、参考にしたPyInstallerのドキュメントについて記載されているサイトを紹介します。
このサイトは英語表示ですので、苦手な方は日本語に翻訳することをお勧めします。
ドキュメント
https://pyinstaller.org/en/stable/index.html
使い方について
https://pyinstaller.org/en/stable/usage.html
ライセンス関係について
https://pyinstaller.org/en/stable/license.html
まとめ
今回は、PyInstallerでPythonプログラムをexe形式にする方法を解説しました。
exe形式にすることで、Pythonの実行環境がなくても、Pythonのプログラムを動かすことが出来ます。
これにより、Pythonのプログラムを使える場面が増えると期待できますね!
それでは、今日の解説はこのへんで。
またのお越しをお待ちしております。