【pyxel 1.5】pyxelファイルをパッケージ化(.exe化)してみる
pyxel1.5以前にはpyxelで作成したアプリケーションをまとめてexeにしてくれる機能がありましたが、1.5以降はなくなってしまいました。(その代わりに.pyxapp形式が登場しました。)
しかしexe化の要望は根強かったようで、製作者のkitaoさんも何らかの対応をする旨お話ししてくれていました。そして、今回pyxel公式のdiscordでアナウンスがありましたので、やり方等々ご紹介します。
使用するツールとしては「nuitka」というもの。こいつが何なのかというと、pythonファイルを単体実行形式(exe)にしてくれるものです。ここまで聞くとpyinstallerと似たもののようですが、特徴としては「1度C言語に変換しコンパイルする」みたいなことが書かれていますね。これにより実行速度が高速になるようです。
では実際にpython環境に入れてみましょう。僕はAnacondaを使っているので、プロンプトを開きます。下記コマンドでインストール。
pip install nuitka zstandard
実際にはnuitkaの実行時にC言語のコンパイラが必要ですが、ユーザーがインストールする必要はありません。nuitkaの初回実行時にインストール可否が聞かれるのでYesで答えておけばOK。
続いてpyxelアプリケーションをパッケージ化してみます。
基本の構文は以下の通り。
(Windows以外で実行する場合は --windows-disable-consoleオプションを削除。)
nuitka --standalone --onefile --include-data-dir=path/to/assets=assets --windows-disable-console application.py
それぞれのオプションについて書いていきます。
nuitka --standalone --onefile
▲ここまでは何もありません。このままでOKです。
--include-data-dir=path/to/assets=assets
▲ここは.pyファイル以外に必要なファイルがあるディレクトリを指定します。
--include-data-dir=C:\python\pyxel_maze\assets=assets
▲例えばこんな感じ。C:\python\pyxel_maze\assetsにpyxresファイルを置いているのでこれを含めます。=assetsの部分は変えたら動かなくなったので、いじっちゃダメっぽいです(よくわかっていない)。
--windows-disable-console
▲Windowsで動かすならこれを追加。
application.py
▲最後はアプリケーションの入り口となる.pyファイルを指定して終わり。
では、今作っている迷路ゲームをexe化してみます。
__
|
|______________assets
| |
|____main.py |______assets.pyxres
▲ディレクトリ構成はこんな感じ。
main.pyを入り口として、assets内のassets.pyxresを含めます。
nuitka --standalone --onefile --include-data-dir=C:\python\pyxel_maze\assets=assets --windows-disable-console C:\python\pyxel_maze\main.py
▲実行するコマンドです。
しばらくすると…。
Nuitka:INFO: Successfully created 'main.exe'.
▲できました!
ダブルクリックで実行すると…。
▲実行できました!
とりあえずこれでできたっぽいですね。動作速度も問題なしです。
今回はここまで。
読んでいただきありがとうございました。
この記事が参加している募集
ここまで読んでいただきありがとうございます!