概要
Flask で画面を作成して Windows で動作する GUI アプリケーションを作成する方法について解説します。
手順
前提
Node.js がインストールされていて、コンソールより npm
コマンドが使えるものとします。
1. 雛形をダウンロードする
nekobean/electron-flask-template: Electron with flask example. にテンプレートがあります。
2. セットアップする
Python 環境は Pyinstaller でバイナリ化した際に PC の Python 環境に入っている使用しないライブラリもパッケージ化されてしまうことを防ぐために、venv を使用して仮想環境を作成し、そこに Flask など使用するライブラリのみを pip でインストールします。
3. デバッグモードで起動する
開発中は以下のコマンドでデバッグモードで起動できます。
4. ビルドする
以下のコマンドでビルドできます。ビルドが完了すると、dist\win-unpacked
以下にパッケージが出力されます。
仕組み
Flask の実行と終了
nodejs の child_process で、Flask を実行し、127.0.0.1:5000
にサーバー立てます。
ビルドしたパッケージでは Pyinstaller によって生成される実行ファイル build/dist-python/app.exe
、デバッグ時は python コマンドで web/app.py
を実行することで Flask を起動します。
execFile()
で子プロセスで実行ファイルを起動した場合、親プロセスが終了しても子プロセスが残ったままになってしまうため、ウィンドウが閉じられたタイミングで ps-tree
で Flask を起動しているプロセスを探して、終了します。
このトップページをElectron で読み込んで、画面に出力しています。
ビルドの仕組み
build_python.js
を実行すると、Pyinstaller により Python コードが実行ファイルに変換され、build/dist-python/app.exe
が出力されます。electron-builder
により、dist\win-unpacked
以下にパッケージが出力されます。
コメント