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

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

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やmacOSで開発したPythonプログラムもOKになります。
つまり、LinuxやmacOSで開発した実行プログラムをWindowsユーザーに配布可能ということです。

あとは、Pythonのバージョンに関しては要注意です。

cx_FreezeのバージョンPythonのバージョン
cx_Freeze 6.4, 6.5Python 3.6 to 3.9
cx_Freeze 6.2, 6.3Python 3.5.2 to 3.8
cx_Freeze 6.1Python 3.5.0 to 3.8
cx_Freeze 6.0Python 3.5.0 to 3.7
cx_Freeze 5.1.1Python 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の動作確認が完了です。

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