メインコンテンツへスキップ
見出し画像

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

    ▲できました!

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

    画像

    ▲実行できました!

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

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

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

     
     
    出版社のしがない社内SE。 ここでは主に趣味のプログラミングやゲーム制作について書いています。作ったゲームは https://koidemizu.github.io/ で公開しているのでよかったら遊んでください。 ゲーム大好きインドア派。

    あなたへのおすすめ