1. はじめに
Tkinterで作ったGUIプログラムを、配布するときに、exe実行ファイルよりInstallerとして渡したほうがいいと思います。cx_Freezeにその機能があったので、それを試してみました。
今回、Installer化するプログラムはこちらです。(OS:Windows 10, 64bit)
file name:multi_winews_tkinter.py
2. cx_Freezeの設置
Anacondaを使っているため、pipではなくcondaで設置します。
conda install -c conda-forge cx_freeze
3. setup.pyファイルの作成
Pythonのプログラム(file name:multi_winews_tkinter.py)が置いてあるフォルダーにsetup.pyを作成します。
setup.pyの書き方は、こちらのページを参考にしました。
様々な用途の、サンプルsetup.pyが容易されているので、参考にしてください。(例:PyQTでGUI作成)
https://github.com/anthony-tuininga/cx_Freeze/tree/master/cx_Freeze/samples
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
executables = [
Executable('multi_windows_tkinter.py', base=base)
]
setup(name='simple_Tkinter',
version='0.2',
description='Sample cx_Freeze Tkinter script',
executables=executables
)
4. InstallerファイルのBuild
ターミナルで、下記の命令を実行します。
python setup.py bdist_msi
そうなると、Installerファイル(msiファイル)が形成されます。今回のInstallerの容量は、11MBでした。
5. 別のPCでInstallerを実施
Python環境が設置されていないPCで、上記のInstallerファイルを実行します。
下記の画面が表示され、設置が始まります。
設置結果、問題なく動作しました。
最後に、アンインストールしたい時には、Windows Control Panelで他のWindows Program同様、簡単にアンインストールが可能です。便利ですね。
6. まとめ
- cx_FreezeでTkinterプログラムの配布ファイルを作成。
- Exe形式ではなく、Installer形式を作成。
- Python環境がないパソコンにInstallし、無事に動作していることを確認。
cx_Freezeいいですね。動作も早いし、生成ファイルのサイズも小さく、満足しています。
#参考資料
1.[Python] Tkinterで複数のWindowを表示
2.cx Freeze distutils setup script
3.cx Freeze setup examples