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スゲーと感じました。