![見出し画像](https://assets.st-note.com/production/uploads/images/92560794/rectangle_large_type_2_e20aac30348565b1e24671101db73b42.png?width=1200)
PythonスクリプトをExe化する手順
1. はじめに
筆者は、ちょっとした便利ツールを作成する場合、Pythonを使用することが多い。Pythonはライブラリが豊富で、ツール作成に適している。
Pythonのプログラムを使用する場合、Python環境を構築する必要がある。この場合、他人に配布する時に、環境がないと使用してもらうことができない。この場合、「*.exe」として提供することで、使用者の完了に左右されずにプログラムを実行することができる。
そこで今回は、Pythonのプログラムをexe形式にする手順をまとめる。
2. 前提条件
今回の前提条件を以下に示す。
OS: Windows 10
Pythonのバージョン:3.11
pyinstallerのバージョン:5.6.2
使用するツール:Windows PowerShell
3. 情報の調査
Pythonはスクリプト言語であるため、C言語などと違い、exeファイルを作らずに実行できる。ただし、他人への配布を考えると、exeファイル化する方が効率が良い。まずは、現状の実行方法の整理と、ツールの調査を行った。
3.1 現状の実行方法の整理
現状の実行方法を整理する。Pythonを実行する場合は、以下のようにコマンドラインから実行している。
python program.py
上記は、コマンドラインからPythonを実行するコマンドである。Pythonでは、「python ファイル名.py」で実行する。
3.2 ツールの導入(pyinstaller)
Pythonプログラムをexe化にするためには、ツールが必要である。このためのライブラリが、「pyinstaller」である。今回は、これを使用することにした。
4. Exeファイル化するまでの手順
以下に、PythonをExeファイル化するまでの手順を示す。
4.1 pyinstallerのインストール
pyinstallerをインストールする。今回は、pipコマンドでインストールする。
pip install pyinstaller
上記のコマンドを実行すると、pyinstallerがインストールできる。
4.2 仮想環境を作成する
次に、仮想環境を作成する(厳密にはやらなくてもよい)。
python -m venv env
筆者は、仮想環境作成のツールとして「venv」を使用している。上記のコマンドを実行すると、カレントディレクトリにenvというフォルダを作成する。
ちなみに、仮想環境は有効・無効を設定できる。筆者は、コマンド操作をPowerShellでやっているが、一度ソフト閉じると、仮想環境は無効状態となる。この場合、再度仮想環境を有効にする場合は、以下のコマンドを実行する。
./env/Scripts/activate
このコマンドを実行することで、仮想環境を再度有効にできる。
4.3 Exeファイル化する
PythonファイルをExe化する。コマンドは以下である。
pyinstaller program.py
上記のように「pyinstaller ファイル名.py」でExeファイルを生成できる。その後、エラーがなければ、distというフォルダを確認すると、Exeファイルが入っていることが分かる。
4.4 Exeファイルを実行
Exeファイルを実行するには、以下のコマンドを実行する。
./program.exe
上記の通り、「./Exeファイル名」でプログラムを実行できる。これらが、一連のExeファイル化の手順である。
5. 動作確認
先ほどまでで、*.pyをExeファイル化できた。次は、動作確認である。一見上手く動作したように見えたが、いくつか問題点があった。
5.1 問題点1 : 別フォルダでExeを実行する場合
別のユーザが使用することを考え、Exeファイルのみを別のフォルダに移動し、動作確認をした。その場合、以下のエラーメッセージが現れた。
Error loading Python DLL 'C:\Users\user\Desktop\foldername\python311.dll'.LoadLibrary: 指定されたモジュールが見つかりません。
筆者も原因不明であるが、恐らく、Exe以外のファイルも移してこないといけないようだ。これでは、Exeファイルのみで実行することができない。
色々調べた結果、pyinstallerのオプションを使用する必要がある。
pyinstaller program.py --onefile
上記がpyinstallerのコマンドである。Exe化のコマンドにオプションとして、「--onefile」とつける。これによって、実行に必要なファイルを1つのファイルにまとめてくれる。
生成したExeを実行すると、エラー無く実行できる。
5.2 Exeファイルをクリックして実行した場合
次は、GUIから、ファイルをクリックして実行した。しかし、動作があまりに早すぎて動作を確認できなかった。当たり前だが、プログラムの動作を人間の目で追うことは困難である。
そこで、プログラムの最後にコンソール入力待ちを入れることにした。
val = input('>> ')
このようなコンソール入力待ちを入れ、プログラム終了前にコンソール入力で一時停止する。結果、Exeファイルの動作確認ができる。
6. おわりに
今回は、PythonのプログラムをExeファイル化する方法をまとめた。Exeファイル化できると、自分以外の人にプログラムを配布できる。気になる人はやってみてほしい。