
先日アップした「Python Kivy スライダーの使い方 グラフをリアルタイムで更新する方法」で作成したものをExeファイル化します。
KivyのウインドウにMatplotlibのグラフを表示して、スライダーでグラフのプロットをグリグリと動かすプログラムです。
コンテンツ
Pyinstallerを使ってExe化
Exeファイルを作るのは、(最もよく使われている?)「Pyinstaller」を使用します。
pipのアップデート
まずはライブラリをインストールする前にpipのアップデートを実施しておきます。
pip install --upgrade pip
または、
python -m pip install --upgrade pip
環境によってコマンドが異なります。
Pyinstallerをインストール
以下のコマンドでPyinstallerをインストールします。
pip install pyinstaller
カレントフォルダでコマンドプロントを起動
pyファイルとkvファイルを保存しているフォルダに移動します。
アドレスバーに「cmd」と入力してEnterを押すとコマンドプロンプトが立ち上がるので、以下のコマンドを実行します。
※「kivyslider.py」のところにファイル名を入れてください。
pyinstaller kivyslider.py --onefile --noconsole
コマンドを実行すると、このようなフォルダ&ファイルが作成されます。この中のdistフォルダの中にexeがファイルがあります。
distフォルダの中にexeファイルが出来ていることが確認されました。
しかし、このままではexeファイルは実行できません。specファイルの編集、kvファイルのコピーが必要になります。
specファイルの編集
フォルダに作られたspecファイル、今回であれば「kivyslider.spec」を編集します。
specファイルはエディターソフトで編集することができます。上の画像はVisual Studio Codeで表示したものです。
変更前のspecファイル
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['kivyslider.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='kivyslider',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
変更後のspecファイル
# -*- mode: python ; coding: utf-8 -*-
from kivy_deps import sdl2, glew
block_cipher = None
a = Analysis(['kivyslider.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
name='kivyslider',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
coll = COLLECT(exe, Tree('.'),
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
strip=False,
upx=True,
name='main')
変更箇所は、
3行目「from kivy_deps import sdl2, glew」追加
28行目「*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],」追加
42行目〜49行目「coll = COLLECT(exe, Tree(‘.’)〜」49行目まで追加
変更できたら保存してspecファイルを閉じます。
specファイルがあるカレントフォルダからコマンドプロンプトを立ち上げ、以下のコマンドを実行します。
※「kivyslider.spec」のところにファイル名を入れてください。
pyinstaller kivyslider.spec
kvファイルをコピー
kvファイルをdistフォルダ(exeファイルと同じフォルダ)にコピーします。
exeファイルの実行
exeファイルをダブルクリックするとkivyで作成したGUIアプリが立ち上がりました。
exeファイルは、kivyとmatplotlibを使用した50行くらいのプログラムで、80MB程度のファイルサイズになります。起動に3秒ほどかかります。
kivy関連の記事はこちらにまとめています。>>>Python kivy 使い方まとめ