見出し画像

【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'.

▲できました!

ダブルクリックで実行すると…。

▲実行できました!

とりあえずこれでできたっぽいですね。動作速度も問題なしです。

今回はここまで。
読んでいただきありがとうございました。

この記事が参加している募集

ここまで読んでいただきありがとうございます!