Pyinstallerの使い方【Pythonプログラムのexe化】

Pyinstallerの使い方【Pythonプログラムのexe化】 プログラミング

Pythonで作成したプログラムを配付する場合、どうしますか?

「Pythonをインストールしてください」
「Anacondaをインストールしてください」

まさか、こんなことを言えませんよね。
相手がプログラマーならまだしも、クライアントなら難しいでしょう。
例え、同じ会社でもシステムに詳しい人とでないと厳しいはずです。

このような場合に、Pyinstallerが活躍します。
Pyinstallerを利用すれば、exeファイルとして配付することが可能です。
もちろん、exeファイルを配付すれば、PythonやAnacondaのインストールをお願いする必要もありません。

この記事では、Pyinstallerの使い方を解説しています。
Pyinstallerを用いて、実際にexeファイルを作成していきます。

本記事の内容

  • Pyinstallerとは?
  • Pyinstallerのインストール
  • PyinstallerによりPytonプログラムをexe化する
  • Pyinstallerで作成したexeの起動確認

それでは、上記に沿って解説していきます。

Pyinstallerとは?

Pyinstallerは、Pythonプログラムをexe化します。
アプリケーション作成ツールとでも言ったほうが、わかりやすいのかもしれません。

このPyinstallerは、以下のOSで動きます。

  • Windows (32-bit and 64-bit),
  • GNU/Linux (32-bit and 64-bit),
  • Mac OS X (32-bit and 64-bit),
  • contributed suppport for FreeBSD, Solaris, HPUX, and AIX.

つまり、マルチプラットフォーム(クロスプラットフォーム)対応と言えます。
ただ、この記事ではWindows環境を前提に説明をしています。

対応しているPythonのバージョンは、以下。

  • Python 2.7
  • Python 3.5
  • Python 3.6
  • Python 3.7

現時点で、Pythonの最新バージョンは3.9.1です。
バージョン3.9.1は、2020年12月7日に公開されています。

そうすると、比較的新しいPythonはサポート対象外となります。
よって、Pythonのバージョンは要注意です。

なお、Pyinstallerの最新バージョン(安定版)は、4.1ということです。
そして、4.1はPython 3.5-3.7に対応しています。

Pyinstallerのインストール

最初に、Pythonのバージョンを確認します。
Pythonのバージョンは、要注意でしたね。

Windowsなら、コマンドプロンプトかAnaconda Promptを起動します。
次のコマンドで確認です。
(複数のバージョンのPythonが動く環境を用意しておいた方が便利です)

>python -V
Python 3.7.3

Python 3.7のため、Pyinstallerでサポートされています。
安心して、インストールが可能ですね。

今回は、PIPを使ってPyinstallerをインストールします。
Pyinstallerの公式サイトでも、PIPによるインストールが記載されています。

インストールコマンドを実行する前に、おまじないを唱えます。
PIPコマンド利用する際は、常に事前に更新するようにしておきましょう。

python -m pip install --upgrade pip

それでは、Pyinstallerのインストールです。

pip install pyinstaller

次の表示で終われば、インストールは完了です。

Successfully installed pyinstaller-4.1

最新版のPyinstallerが、インストールされました。
念のために、Pyinstallerがインストールされたかどうか確認しましょう。

>pyinstaller -v
4.1

問題ありませんね。
では、実際にPyinstallerを用いてexeファイルを作成していきましょう。

PyinstallerによりPytonプログラムをexe化する

実際に起動したかどうかを確認したいです。
そのためには、GUIアプリにするのがベストでしょう。

PythonでGUIアプリを作成するためには、Tkinterが使えます。
次の記事では、TkinterでGUIアプリを作成する方法を解説しています。

上記記事より、Pythonのコードをコピー。

import tkinter
# 画面作成
window = tkinter.Tk()
window.geometry("400x300")
window.title("ボタンを表示する")
# ボタン作成
btn = tkinter.Button(window, text="ボタン")
# ボタン表示
btn.place(x=125, y=230, width=150, height=40)
# 画面表示(常駐)
window.mainloop()

上記コードのスクリプトファイルをC:\python\appに「exe_test.py」として保存します。

exe_test.pyを実行すると、次の画面を表示するGUIアプリが起動します。
なお、ボタンを押しても何も起こりません。

Pyinstallerの利用は、コマンドプロンプト上で行います。
まずは、スクリプトを保存した「C:\python\app」に移動しておきます。

移動後、次のコマンド実行します。
Pyinstallerの使い方は、以下。
(exe_test.pyは、スクリプトファイル名)

pyinstaller exe_test.py --onefile

オプションにもいろいろとありますが、今は「–onefile」だけとしておきます。
ズラズラと処理が流れて、次のような表示で終わります。

23401 INFO: Appending archive to EXE c:\python\app\dist\exe_test.exe
23412 INFO: Building EXE from EXE-00.toc completed successfully.

作業フォルダを確認します。

作業した後があります。
exeファイルは、distフォルダの中に作成されています。

見たことのないアイコンでexeファイルが、ありますね。
以下では、このexeファイルを実際に起動して確認していきます。

Pyinstallerで作成したexeの起動確認

2つのPCでexeファイルの起動を確認します。

  • exeファイルを作成したPC
  • PythonがインストールされていないPC

それでは、確認していきます。

exeファイルを作成したPC

exeを実行すると、次のような動きとなります。

コマンドプロンプトもセットで動きます。
GUIアプリではない場合もあるからでしょう。

なお、GUIアプリ上の「×」で閉じれば、コマンドプロンプトも閉じます。
同じように、コマンドプロンプトを閉じれば、GUIアプリも閉じます。
つまり、GUIアプリとコマンドプロンプトは連動しているということです。

さて、exeファイルを作成したPC上で動くのは当然です。
ここで動かないと話になりません。

では、次にPythonがインルトールされていない環境で確認します。

PythonがインストールされていないPC

PythonがインストールされていないPCを探すのに苦労しました。
古いPCだったため、GUIアプリの起動に時間がかかりました。

しかし、問題なくGUIアプリは起動しました。
なんなく動いたことに少し感動しました。

.NETで開発したアプリなら、.NETフレームワークのバージョン違いで動かないことが多いです。
また、Javaで開発したアプリなら、そもそもJavaがインストールされていないことがあります。

それらを考えたら、Pythonのアプリがアッサリと動いたことが単純にスゴイと。
それもGUIアプリです。
改めてPythonスゲーと感じました。

タイトルとURLをコピーしました