PythonのスクリプトをPyinstallerでexe化する方法

プログラミング
ブックマーク
PythonのスクリプトをPyinstallerでexe化する方法
Pythonスクリプトをexe化する方法について解説しています。今回はライブラリとして「Pyinstaller」を使用します。具体的な方法やexe化することのメリットとデメリットについても説明していきます。(本記事はWindows環境を前提としています。)

通常Pythonスクリプトを実行するにはPythonをインストールして環境構築をする必要がありますが、exe化することによって環境構築無しでも実行することができるようになります。 Pythonスクリプトをexe化するためのライブラリにはPyinstaller、py2exe、Nuitkaなどがあります。今回はPyinstallerを使ったexe化を説明していきます。

Pythonスクリプトのexeファイル化とは

exeファイルとは開発言語に依存することなくプログラムを実行できるようにしたもので、主にWindows環境で使用されます。 Pythonスクリプトもexe化することでWindows環境で実行できるファイルにすることができます。

Pythonスクリプトexe化のメリットとデメリット

Pythonをexe化することには、以下のようなメリットとデメリットがあります。

Pythonをexe化することのメリット

Pythonスクリプトをexe化することで、Python環境の構築をしなくてもプログラムを実行できます。 つまりexeファイルで配布すれば使用する人はPythonやライブラリをインストールする必要が無いため、プログラムの配布が容易になります。

またexeファイルはマシン語(バイナリデータ)になっていますので、中身のコードを読解することは困難です。

Pythonをexe化することのデメリット

Pythonスクリプトをexe化するとファイルサイズが大きくなる場合があります。 また、バイナリデータなのでexeファイルを直接修正することが出来ません。

Pyinstallerを使ってファイルをexe化しよう

Pythonスクリプトをexe化するライブラリはいくつかありますが、今回はメジャーなライブラリである「Pyinstaller」を使いexe化をしていきます。

Pyinstallerのインストール

Pythonインストール済みの環境にPyinstallerをインストールします。 下記のpipコマンドにてインストールします。

pip install pyinstaller

Pyinstallerを使ったexe化の方法

Pyinstallerの使い方を説明していきます。

まず最初に使用にあたっての注意点です。

  • 64bit OS環境で作成したexeファイルは32bitOSで利用不可。
  • 32bit OS環境で作成したexeファイルは32bit/64bitの両方で利用できる。
  • Pythonが3.7以上のバージョン(2022年11月現在の最新)を利用していること。
  • Pyinstallerがサポートされているか事前に公式サイトでの確認を推奨します。(https://pyinstaller.org/en/stable/)

基本的な実行コマンドは下記の通りです。

pyinstaller Pythonスクリプト名

例としてexe化したいPythonスクリプトをtest.pyとし、C:\python_envを作業フォルダとします。 以下のように進めてみましょう。

  • コマンドプロンプトにて作業フォルダに移動
  • Pyinstallerでexeファイルに変換を実行

cd C:\python_env
pyinstaller test.py

成功すると下記のように「completed successfully」というメッセージが表示されます。

14719 INFO: Building COLLECT COLLECT-00.toc completed successfully.

完了すると作業フォルダにbuildとdistというフォルダが作成されます。 distフォルダの中にexeファイルがあります。(今回の場合はtest.exe) これがPythonスクリプトをexe化したものです。

Pyinstallerを使う際のポイント

Pyinstallerでは以下のオプションを使用することができます。

–onefile :関連するファイルを1つにまとめてexeファイルを作成します。

pyinstaller test.py –onefile

–noconsole :コンソール(コマンドプロンプト)を表示しません。

pyinstaller test.py –noconsole

–icon:exeファイルのアイコンを変更できます。 (exe化するスクリプトと同一ディレクトリに*.icoファイルを置いておくと簡単です)

pyinstaller test.py –icon=test.ico

上記以外にもたくさんのオプションがありますので詳しくは公式サイトもご確認ください。 (https://pyinstaller.org/en/stable/)

exe化したファイルを実行してみよう

今回は以下のスクリプト(sample.py)を実際にexe化してみましょう。

今回用意したsample.pyは現在時刻を表示するGUIアプリになっています。 exe化する前に動作確認をしてみましょう。 ウィンドウが立ち上がり「開始」と表示された後、時刻が表示される仕様です。

sample.py

import time
from tkinter import ttk, Tk

def update():
    label.configure(text=time.strftime('%H:%M:%S'))
    label.after(1000, update)
 
app = Tk()
app.title("Sample")
app.geometry("300x100")
app["bg"] = "white"
 
clock = ttk.Style()
clock.configure('TLabel', background='blue', foreground='white')
 
label = ttk.Label(app, text="開始", font=('arial', 50))
label.pack(expand=True)
 
label.after(1000, update)
 
app.mainloop()

下記コマンドを実行しexe化します。今回はオプションを使いファイルを一つにまとめ、 コンソール(黒い画面)を表示しないようにします。

pyinstaller sample.py –onefile –noconsole

buildとdistというフォルダが作成されdistフォルダ内にsample.exeが作成されていると思います。 sample.exeを実行してみましょう。 exe化前と同じ動作が確認できれば成功です。 可能であればPython環境が無いパソコンでも確認してみましょう。

まとめ

Pythonで作成した業務効率化ツールなど、自作プログラムをexe化して配布する際にご活用ください。

TECH PLAYでは、ITに関わる様々なイベント・勉強会・講演会・交流会・カンファレンス・セミナーなどの情報を集約し掲載しています。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす