2019年11月19日

Kivy アプリの Windows 用実行ファイルを作成するまで (作製編)

1. PyInstaller を使用する場合

main.py

main.kv

上記の main.py, main.kv を例に説明します. 適当なディレクトリにこれらのファイルを作製します.

コマンドプロンプトを管理者として開き, main.py ファイルのあるディレクトリに移動し,

python -m PyInstaller --noconsole main.py

を入力します.

main.py のあるディレクトリに生成された main.spec を開き,

# -*- mode: python ; coding: utf-8 -*-

の次の行に,

from kivy_deps import sdl2, glew

を追加し, ('.' ではなく, '_' なので注意*1)

a.datas,

の次の行に,

*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],

を追加します. インデントは揃えます.

datas=[],

datas=[('main.kv', '.')],

にします. kv ファイルを使わない場合は, 必要ないはずです.

python -m PyInstaller main.spec

と入力し,

WARNING: The output directory "(main.py のあるディレクトリ)\dist\main" and ALL ITS CONTENTS wil l be REMOVED! Continue? (y/N)

と出たら y を入力します.

dist/main

に main.exe が作製されているので, 実行して画面が表示されたら成功です.

2. Nuitka を使用する場合

main.py

上記の main.py (main.kv は PyInstaller の項と同じもの) を例に説明します. 適当なディレクトリにこれらのファイルを作製します.

コマンドプロンプトを管理者として開き, main.py ファイルのあるディレクトリに移動し,

python -m nuitka --standalone --windows-disable-console --mingw64 --jobs=1 main.py

と入力します. jobs は, CPU コア数 * 2 にするといいのかもしれません. この作業は時間がかかります. 終了後, main.dist/ に main.exe が作製されます.

Python37-32\Lib\site-packages\kivy\

から data フォルダを main.dist/kivy にコピーし,

Python37-32\share\glew\bin\

から glew32.dll を,

Python37-32\share\sdl2\bin\

から全てのファイルを main.dist にコピーします. *2 最後に, main.kv を main.dist にコピーします.

main.exe を実行して画面が表示されたら成功です.

3. サンプル

以前, Python で迷路生成 で書いた kivy のコードを PyInstaller, Nuitka の両方で exe 化してみました.

PyInstaller

Nuitka

自分の環境では動作する, しないといった報告をしていただけると喜びます. 少なくとも, Linux Mint 18.3 の Wine では動きませんでした.

*1

Create a package for Windows(翻訳済み) − Kivy 1.10.0 ドキュメント:

では kivy.deps になっている. 以前はそうだったのかもしれない.

*2

作製環境でこのサンプルを動かした場合,

  • libmpg123-0.dll
  • libcrypto-1_1.dll
  • libssl-1_1.dll
  • libvorbis-0.dll
  • libvorbisfile-3.dll
  • libwebp-7.dll
  • libtiff-5.dll
  • libopus-0.dll
  • libopusfile-0.dll
  • libmodplug-1.dll
  • libFLAC-8.dll
  • libogg-0.dll
  • tcl86t.dll
  • tk86t.dll
  • sqlite3.dll
は無くても動きました.

参考ページ

Create a package for Windows(翻訳済み) − Kivy 1.10.0 ドキュメント:
KivyのGUIアプリをNuitkaで簡単に小サイズ・高速に動く実行ファイル(exe)にする(Windows10)
Packaging Kivy apps written in Python 3, targeting Windows using Nuitka

19/12/17 追記: 無くても動く dll を列挙した.

posted by Takenoko at 13:40| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: