Pythonで作成したアプリを配布する場合、exeとして配布したいですよね。
exe化さえすれば、窓の杜やVecorでも公開できるようになります。
そんなことまで可能にするのが、py2exeです。
本記事の内容
- py2exeとは?
- py2exeのシステム要件
- py2exeのインストール
- py2exeの動作確認
それでは、上記に沿って解説してきましょう。
py2exeとは?
py2exeは、PythonスクリプトからスタンドアロンのWindows実行プログラムをビルドするためのdistutils拡張機能です。
簡単に言うと、py2exeでPythonプログラムをexe化できるということです。
また、py2exeの歴史は長いです。
すでに2003年時点では、Version0.3.4が公開されています。
そして、2021年になった現在でも常時更新されています。
最新バージョンは、2021年1月22日に公開された0.10.2.1になります。
バージョンで、0.10.●というのはあまり見ない形式ですね。
バージョンを1.0にはしたくないのでしょうか?
まあ、とにかく滅多に見ないナンバリングです。
では、次にこのpy2exeのシステム要件を確認します。
py2exeのシステム要件
現時点では、py2exeの最新バージョンが0.10.2.1となります。
サポートOSに関しては、Windowsのみとなっています。
PythonでWindowsのみサポートというのは、なかなか珍しいです。
そもそも、exeはWindowsでしか動きません。
そのexeを作る環境もWindowsだけで構わないという発想なのかもしれません。
この発想は、これはこれで潔いと思います。
その点から、py2exeはPythonにおけるexe化のスペシャリストと言えそうです。
サポートOS以外での注意点は、Pythonのバージョンです。
最新バージョンがサポートしているバージョンは、以下。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
上記は、公式開発サイクルに含まれるPythonのバージョンということです。
公式開発サイクルは、以下の表を見ればわかります。
バージョン | リリース日 | サポート期限 |
3.0 | 2008年12月3日 | 2009年1月13日 |
3.1 | 2009年6月27日 | 2012年4月9日 |
3.2 | 2011年2月20日 | 2016年2月20日 |
3.3 | 2012年9月29日 | 2017年9月29日 |
3.4 | 2014年3月16日 | 2019年3月18日 |
3.5 | 2015年9月13日 | 2020年9月30日 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
なお、今回は以下のPythonで検証します。
>python -V Python 3.8.6
Python 3.8だと公式開発サイクルに入っています。
以上、py2exeのシステム要件でした。
次は、py2exeをインストールしていきます。
py2exeのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 54.1.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、py2exeのインストールです。
py2exeのインストールは、以下のコマンドとなります。
pip install py2exe
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- --------- cachetools 4.2.1 future 0.18.2 pefile 2019.4.18 pip 21.0.1 py2exe 0.10.2.1 setuptools 54.1.0
py2exeは、最新バージョンがインストールされています。
あとは、依存関係のあるパッケージが3個インストールされていますね。
以上、py2exeのインストールが完了しました。
次は、py2exeで実行ファイルを作成していきます。
py2exeの動作確認
実際にexeファイルを作成していきます。
まずは、exe化するアプリを開発しましょう。
大げさですが、Pythonでコードを用意するだけです。
この際、単純に「Hello py2exe !!」と表記するだけのアプリは止めておきましょう。
その理由は、起動しても一瞬で閉じてしまうからです。
だから、確認しようにも確認できません。
そのため、GUIアプリを用意します。
PythonでGUIアプリを作成するためには、Tkinterを利用します。
次の記事では、TkinterでGUIアプリを作成する方法を解説しています。
上記記事より、Pythonのコードをコピー。
exe_test.py
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」は各自で都合の良い場所にして問題ありません)
次に、以下のプログラムをsetup.pyとして保存します。
setup.py
from distutils.core import setup import py2exe setup(console=['exe_test.py'])
setup.pyはexe_test.pyと同じくC:\python\appに保存します。
この時点では、C:\python\appには2つのファイルがあることになります。
ここまで用意できたら、コマンドプロンプトやPowerShellを開きます。
そして、C:\python\appにまで移動します。
移動したら、次のコマンドを実行します。
python setup.py py2exe
上記コマンドを実行すると、ズラズラと表示が流れます。
それが完了したら、C:\python\appを確認します。
そうすると、上記のようにdistフォルダが作成されています。
distフォルダの中は、以下のような状況です。
この中に、「exe_test.exe」があることを確認できます。
GUIアプリのPythonスクリプトファイル名と同じです。
では、この「exe_test.exe」を実行してみましょう。
そうすると、以下の画面が表示されます。
GUIアプリの「×」、コマンドプロンプトの「×」のどちらかを押せば両方とも閉じます。
これらは、ペアということです。
もし、GUIアプリでないと一瞬だけコマンドプロンプトが見えるだけになります。
あとは、distフォルダを圧縮してdist.zipを作ります。
そして、これを配布するということになるでしょう。
念のため、Pythonのインストールされていない別PCでも動作を確認しました。
その結果は、問題ありませんでした。
以上、py2exeの動作確認が完了です。
これで開発したPythonアプリをフリーソフトとして公開できる第一歩を踏み出せたのではないでしょうか?