見出し画像

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ファイル化できると、自分以外の人にプログラムを配布できる。気になる人はやってみてほしい。

この記事が気に入ったらサポートをしてみませんか?