Pythonで作成したアプリを配布する場合、どうしますか?
配布先の担当者は、プログラマーではありません。
相手方のWindowsマシンには、Pythonもインストールもされていません。
さあ、どうしましょうか?
実は、この質問に回答するには配布先の数が重要なポイントになります。
配布先の数が多ければ、Webシステムとして提供した方がベターでしょう。
でも、今回の想定はたった1つの配布先とします。
そうなると、exeファイルの配布が最もベストな回答になります。
では、Pythonのプログラムをexe化するにはどうすればよいのでしょうか?
何個かの候補が出てきますね。
今回は、その中からcx_Freezeを取り上げます。
本記事の内容
- cx_Freezeとは?
- cx_Freezeのシステム要件
- cx_Freezeのインストール
- cx_Freezeの動作確認
それでは、上記に沿って解説していきます。
cx_Freezeとは?
cx_Freezeは、Pythonスクリプトからスタンドアロンの実行ファイルを作成します。
そのため、cx_Freezeとは実行ファイル作成ツールと言えるでしょう。
そして、cx_Freezeの歴史は長いです。
すでに2003年時点では、Version2.1が公開されています。
Pythonのライブラリとしても、かなり歴史のあるモノじゃないでしょうか?
これって、それだけ昔から必要とされているということになりますね。
そして、2021年になった現在でも常時更新されています。
最新バージョンは、2021年1月24日に公開された6.5.3になります。
では、次にこのcx_Freezeのシステム要件を確認します。
cx_Freezeのシステム要件
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Linuxの場合は、次の記事もご覧ください。
あとは、Pythonのバージョンに関しては要注意です。
cx_Freezeのバージョン | Pythonのバージョン |
cx_Freeze 6.4, 6.5 | Python 3.6 to 3.9 |
cx_Freeze 6.2, 6.3 | Python 3.5.2 to 3.8 |
cx_Freeze 6.1 | Python 3.5.0 to 3.8 |
cx_Freeze 6.0 | Python 3.5.0 to 3.7 |
cx_Freeze 5.1.1 | Python 2.7 |
今現在の最新バージョン6.5.3を利用するなら、Pythonのバージョンは3.6~3.9までになります。
また、開発環境のPythonバージョンがPython 3.5.2なら、最新のcx_Freezeは使えないということです。
つまり、開発環境のPythonバージョンに適したcx_Freezeを選択してインストールしないといけません。
このことにさえ注意すれば、それ以外は特に何も意識する必要はないでしょう。
そして、今回に利用する環境のPythonバージョンは以下。
>python -V Python 3.8.6
対応表からすると、cx_Freeze 6.4, 6.5がサポート対象となります。
よって、何もバージョンは指定せずにインストールしましょう。
cx_Freezeのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 53.0.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、cx_Freezeのインストールです。
cx_Freezeのインストールは、以下のコマンドとなります。
pip install cx-Freeze
もしcx_Freezeのバージョンを指定する必要があれば、次のコマンドを実行します。
pip install cx-Freeze==6.3
インストールは、一瞬で終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------------ ------- cx-Freeze 6.5.3 importlib-metadata 3.4.0 pip 21.0.1 setuptools 53.0.0 zipp 3.4.0
cx-Freezeは、最新バージョンがインストールされています。
あとは、importlib-metadataとzippです。
importlib-metadataは、メタデータにアクセスするためのライブラリとなります。
zippは、Zipfileオブジェクトのラッパーとなるライブラリです。
以上、cx_Freezeのインストールが完了しました。
次は、cx_Freezeで実行ファイルを作成していきます。
cx_Freezeの動作確認
まず、コマンドプロンプトやPowerShellを開きます。
そして、以下のコマンドを実行します。
>cxfreeze --version cxfreeze 6.5.3 Copyright (c) 2007-2020 Anthony Tuininga. All rights reserved. Copyright (c) 2001-2006 Computronix Corporation. All rights reserved.
上記のように、インストールしたcx_Freezeのバージョンが表示されます。
これでcx_Freezeの動作確認自体はOKです。
では、次に実行ファイルを作成していきましょう。
今回は、次のプログラムを実行ファイルにします。
どうせなら、目に見える形のプログラムを用意しましょう。
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」として保存します。
次に、C:\python\appまで移動します。
移動後に、次のコマンドを実行。
cxfreeze -c exe_test.py --target-dir target
「target」フォルダは自動的に作成されます。
そのため、予めフォルダを作成する必要はありません。
targetフォルダの中を確認します。
この「exe_test.exe」を実行してみましょう。
そうすると、以下の画面が表示されます。
GUIアプリの「×」、コマンドプロンプトの「×」のどちらかを押せば両方とも閉じます。
これらは、一蓮托生ということです。
あとは、targetフォルダを圧縮してtarget.zipを作ります。
そして、これを配布すれば一件落着です。
念のため、Pythonのインストールされていない別PCでも動作を確認しました。
その結果は、問題ありませんでした。
以上、cx_Freezeの動作確認が完了です。