ユーニックス総合研究所

  • home
  • archives
  • python-exe

Pythonのプログラムをexe化してみる

  • 作成日: 2021-01-28
  • 更新日: 2023-12-24
  • カテゴリ: Python

Pythonのプログラムをexe化する

プログラミング言語のPythonで作成したプログラム(スクリプト)はコマンドラインやエクスプローラーから実行することができます。
これは実行にはPythonのインタプリタを中継しており、プログラム単体で実行することは出来ません。

しかし「pyinstaller」などのプログラムで、Pythonのプログラムをexe化すればexeファイルとして起動することが出来ます。

この記事ではpyinstallerを使ってPythonのプログラムをexe化する方法を解説します。
具体的には↓を見ていきます。

  • pyinstallerとは?
  • pyinstallerのインストール
  • pyinstallerでプログラムをexeにする

pyinstallerとは?

「pyinstaller」とはpipでインストールできるPythonのプログラムをexeにするプログラムです。

単体のPythonプログラムだけでなく、プログラムが依存しているモジュールもすべてまとめて1つのexeファイルにすることができます。
exeファイルにすることでWindows環境では、Pythonインタプリタを環境にインストールしていなくても実行できるようになります。
また、exeファイルを削除すればそのままプログラムを破棄することが出来ます。

よく使うプログラムはpyinstallerでexeにして、そのexeファイルをダウンロードできるようにしておけば、新しい環境でもexeファイルをダウンロードするだけでプログラムを使うことが出来るようになります。
ただexeにすればソースコードはいらなくなるというわけではないので、ソースコードはソースコードで別途に管理が必要になります。

pyinstallerのインストール

pipなどのパッケージマネージャーを使って環境にpyinstallerをインストールします。

$ pip install pyinstaller  

pyinstallerは下記のモジュールに依存しているため、モジュールがない場合はこれらのモジュールも一緒にインストールされます。

pywin32-ctypes, pefile, altgraph, pyinstaller-hooks-contrib, setuptools  

pyinstallerでプログラムをexeにする

簡単なTkinterによるGUIアプリを作ります。

import tkinter as tk  

root = tk.Tk()  
root.title('Sample')  

btn = tk.Button(root, text='Click me!', command=lambda: print('hi'))  
btn.pack(expand=True, fill=tk.BOTH)  

root.mainloop()  

↑のプログラムを実行すると↓のようなGUIアプリが表示されます。

↑のプログラムを「click-me.py」で保存しておきます。

あとはpyinstallerで↓のようにclick-me.pyモジュールをexe化します。

$ pyinstaller --onefile --noconsole click-me.py  

exe化が始まるとbuildディレクトリとdistディレクトリが作成されます。
distディレクトリ以下にexeファイルがあるのでこれを実行するとアプリを起動できます。

しかし、最近のWindows環境ではアプリの内容によっては作成したexeファイルがウィルスじゃなくてもWindowsにウィルス認定されてしまうことがあります。
これはWindows Defenderによる仕事です。
作成したexeファイルをWindows Defenderから除外したい場合は↓などの記事を参照してみてください。