Windows10のPythonでGUIアプリをEXEにビルドする
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
このページでやりたいこと
- 新規のPythonプロジェクトを作成
- GUIアプリケーションのとっかかり
- EXEとしてビルドする
アプリを作成する
サンプルとして、ボタン1つを持つGUIアプリを作ります。
venv3113 フォルダが作成されていると思いますので、同じ階層に app フォルダを作成し、main.py というテキストファイルを用意します。
main.py には次のように書きます。
import tkinter as tk
import tkinter.messagebox as messagebox
def hello():
messagebox.showinfo("メッセージ", "ハローだよ!")
root = tk.Tk()
# 画面の中央にボタンを配置
button = tk.Button(root, text="ボタン", command=hello)
button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
root.mainloop()
アプリを実行する
PowerShell から実行します。
# プロジェクトのあるフォルダに移動しているものとします
cd D:\projects\aulta-python\multi_video_viewer
python ./app/main.py
これでボタンを1つもつ画面が表示され、ボタンを押すと「ハローだよ!」とダイアログが出てくるかと思います。
Pythonアプリを EXE にする
インストーラ作成の準備
初めてのときに1回だけ行います
PyInstallerをインストール
pip install pyinstaller
myapp.specファイルを作成
pyinstaller --name=myapp --onefile app/main.py
myapp.spec が作成されるので、追加の編集を行います。
テキストエディタで myapp.spec を開きます。
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['path/to/directory/containing/main.py'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
# VLCモジュールを含める
a.hiddenimports += ['vlc']
# メッセージボックスを使う場合
a.datas += [("tkinter/messagebox","C:/path/to/tcl/tk/library/tkinter/messagebox", 'DATA')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas + [('tkinter/messagebox', 'C:/path/to/tcl/tk/library/tkinter/messagebox', 'DATA')],
[],
name='myapp',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
upx_include=[],
runtime_tmpdir=None,
console=True )
2カ所ある下記のコードを追加します。
[('tkinter/messagebox', 'C:/path/to/tcl/tk/library/tkinter/messagebox')]
C:/path/to の部分だけでなく全体的に、Python のインストール方法によって微妙にパスが異なります。
ここまでの手順通りにやってきているなら次の場所に見つかると思います。
C:\Users\aulta\.pyenv\pyenv-win\versions\3.11.3\Lib\tkinter\messagebox.py
Pythonのexeでプロンプトを表示しない
ここまでの手順で exe を作ると、GUIアプリとともに真っ黒なプロンプトが出現します。
このプロンプトを表示させない方法です。
myapp.spec をテキストエディタで開いて、次のように変更します。
# console=True, を探して False に変更
console=False,
ビルドする
ビルドして exe ファイルを作成
pyinstaller myapp.spec
クリーンする
pyinstaller --clean app/main.py