PythonプログラムをpyinstallerでWindowsのEXEファイルにする方法

Pythonのプログラムは通常テキストファイルに書かれたスクリプトファイルをPythonコマンドで読み込ませて処理を実行します。

このスクリプトファイルをpyinstallerを使えばWindows上で動作するEXEファイルにすることができます

この記事ではpyinstallerの使い方を解説します。

スポンサーリンク

pyinstallerの使い方

PythonのスクリプトファイルをWindowsで動作するEXEファイルにするにはpyinstallerを使うのが最も簡単な方法の1つです。

pyinstallerのインストール

pyinstallerは使う前に1度だけインストールする必要があります。

pyinstallerはpipコマンドを使ってインストールします。

pip install pyinstaller

pyinstallerを使ったスクリプトファイルのEXE化

pyinstallerのインストールが完了したら実際にスクリプトファイルをEXE化します。

EXE化するPythonのスクリプトファイルは以下の簡単なものにします。

print( "Hello Python!!" )

出はこれを実際にpyinstallerでEXE化してみます。

EXE化するにはスクリプトファイルがあるフォルダーに移動して「pyinstaller pythonファイル名」で実行します。

今回はスクリプトファイル名を「hello.py」にしてあるので

pyinstaller hello.py

になります。

実行前のフォルダーの中身は

C:\tmp\python>dir
 ドライブ C のボリューム ラベルがありません。

 C:\tmp\python のディレクトリ

2021/01/29  13:28    <DIR>          .
2021/01/29  13:28    <DIR>          ..
2021/01/29  13:29                33 hello.py

になっています。

上記の状態で、pyinstallerを実行すると

C:\tmp\python>dir
 ドライブ C のボリューム ラベルがありません。

 C:\tmp\python のディレクトリ

2021/01/29  13:42    <DIR>          .
2021/01/29  13:42    <DIR>          ..
2021/01/29  13:42    <DIR>          build
2021/01/29  13:42    <DIR>          dist
2021/01/29  13:40                29 hello.py
2021/01/29  13:42             1,001 hello.spec
2021/01/29  13:42    <DIR>          __pycache__
               2 個のファイル               1,030 バイト

とフォルダーにいくつかのフォルダーとファイルができました。

このdistフォルダーにあるhelloディレクトリの中にあるhello.exeが今回作成されたEXEファイルです。

C:\tmp\python\dist\hello>dir
 ドライブ C のボリューム ラベルがありません。

 C:\tmp\python\dist\hello のディレクトリ

2021/01/29  13:42    <DIR>          .
2021/01/29  13:42    <DIR>          ..
2021/01/29  13:42           787,739 base_library.zip
2021/01/29  13:42         1,452,403 hello.exe
2021/01/29  13:42             1,493 hello.exe.manifest
2021/01/21  14:30         3,381,792 libcrypto-1_1.dll
2021/01/21  14:30           686,112 libssl-1_1.dll
2021/01/21  14:30           199,184 pyexpat.pyd
2021/01/21  14:30         3,750,928 python37.dll
2021/01/21  14:30            26,640 select.pyd
2021/01/21  14:30         1,072,656 unicodedata.pyd
2021/01/21  14:30            89,752 VCRUNTIME140.dll
2021/01/21  14:30            89,104 _bz2.pyd
2021/01/21  14:30            38,928 _hashlib.pyd
2021/01/21  14:30           257,040 _lzma.pyd
2021/01/21  14:30            75,792 _socket.pyd
2021/01/21  14:30           124,432 _ssl.pyd
              15 個のファイル          12,033,995 バイト

実行すると

C:\tmp\python\dist\hello>hello.exe
Hello Python!!

C:\tmp\python\dist\hello>

と実行されます。

pyinstallerで単一のEXEファイルを生成する

pyinstallerでオプションなしでEXEファイルを生成するとたくさんのフォルダーやファイルが作成されます。

これらはEXEファイルが動作するのに必要なファイルなので一緒に管理する必要があります。

これはあまりにも面倒。

ということでpyinstallerで単一のEXEファイルを生成してみます。

EXEファイルの単一化

単一のEXEファイルを生成するにはpyinstallerのonefileオプションを使います。

pyinstaller hello.py --onefile --noconsole

今回はdistフォルダーにhello.exeだけが作成されました。

C:\tmp\python\dist>dir
 ドライブ C のボリューム ラベルがありません。

 C:\tmp\python\dist のディレクトリ

2021/01/29  13:54    <DIR>          .
2021/01/29  13:54    <DIR>          ..
2021/01/29  13:54         5,567,825 hello.exe
               1 個のファイル           5,567,825 バイト

このEXEはPythonがインストールされていないWindowsパソコンでも起動すれば動作します。

EXEファイルのスリム化

それにしてもたった1行print文があるだけのスクリプトファイルをpyinstallerでEXE化したファイルが5,567,825バイトは、あまりにも大きすぎますね。

これをスリム化します。

実はEXEファイルが大きくなる原因の1つはPythonにインストールしたモジュールの数にも原因があります。

そこでpythonのvenvを使って仮想環境を作って、必要なモジュール(今回はなし)だけでの環境でEXE化してみます。

pythonのvenvについては以下の記事を参照してください。

Pythonのvenvを使った仮想環境の作り方と使い方
Pythonのvenvは簡単に仮想環境でPythonの実行環境を作成することができます。

仮想環境を作ったらそこでpyinstallerを実行してEXE化してみます。

(projectA) C:\tmp\python\dist>dir
 ドライブ C のボリューム ラベルがありません。

 C:\tmp\python\dist のディレクトリ

2021/01/29  14:03    <DIR>          .
2021/01/29  14:03    <DIR>          ..
2021/01/29  14:03         5,565,789 hello.exe
               1 個のファイル           5,565,789 バイト

(projectA) C:\tmp\python\dist>

と若干ですが小さくなりました。(;^ω^)

まとめ

Pythonのスクリプト(プログラム)をWindowsで動作するEXEファイル化するにはpyinstallerを使うと簡単に行うことができます。

スポンサーリンク
スポンサーリンク
Python学習におすすめの本
Python
スポンサーリンク
ソフトウェア開発日記
タイトルとURLをコピーしました