PythonスクリプトのEXE化を試してみた

1年ほど前に、とあるPythonスクリプトを作成しました。このスクリプトの話をYouTubeにアップロードしておいたところ、たまに問い合わせを頂きます。

KORG Prologue用のパッチをminilogue xd用に変換する
ちょっと必用に迫られて、標記のツールを作ってみました。 Pythonのスクリプトですからどのくらい需要があるか分かりませんが、一応こちらで公開しています。 これは最近Prologue用に作成した音色をそっくりそのままminilogue xd...

必要に迫られて作成したもので、割とやっつけ仕事(あまり綺麗ではないコード)ではありますが、同じように必要に迫られる方はときどき居るようで、その多くは、スクリプトをWindowsで動かしたい/動かし方がわからない、といった内容です。
ここ最近も連続して問い合わせを頂いたので、このPythonスクリプトをWindowsで動かす方法を調べてみました。

Python自体は、WindowsでもMicrosoft Storeから簡単にインストールできました。Python本体とIDE(IDLE)が使えるようになります。

ですので、ITスキルがあれば、あとはGitHubのページからスクリプトをコピーして、

メモ帳か何かに貼り付けて、コマンドプロンプトで実行すれば動くはずなんですね。

でも上のやり方でも、自力で方法を探して実行するのは普通の人にはなかなかハードルが高いです。
さらに、私のスクリプトがWindows環境では不完全(ファイルパスを絶対パスで指定しないと動作しない)という問題もあり(修正済み)、Windowsで動かすのは普通の人にはなかなか難しいということが分かりました。

そこで、試しに「PyInstaller」を使って、このスクリプトをWindowsのコマンドに変換してみました。PyInstallerはこの目的では最もメジャーなツールのようです。

この方法では、とりあえずはPythonスクリプトを「コマンドプロンプトから実行できるexeファイル」に変換することができます。パラメータ等も全部コマンドラインの引数で指定します。GUIが付いたりはしません。

以下、手順です。なお、PyInstallerについてはGUIフロントエンドが付いた「auto-py-to-exe」を使ってみました。

How to Easily Convert a Python Script to an Executable File (.exe)
Although running a Python script using the terminal or your favorite text editor is straightforward, there are some situ...

(1)PythonをMicrosoft Storeからインストールします。

(2)変換用のフォルダを作成し、そこにEXEに変換したいPythonスクリプトを置きます。

(3)pipenvをインストールします。PyInstallerは利用可能なパッケージを全てEXEファイルに入れてしまうらしいので、無駄に大きな実行ファイルにしないために環境を分けます。

C:\Users\boochow>pip install pipenv

(4)pipenvで仮想環境を作ります。コマンドプロンプトで変換用のフォルダをカレントディレクトリにします。
pipenvはPATHの通っていないフォルダに置かれてしまい、コマンドプロンプトから直接起動できません。(その旨、インストール中にWARNINGが出ます。)

なので、代わりにPythonコマンドからパッケージを実行します。

C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd>python -m pipenv --python 3.10

ちなみにpipで取得したファイルが入るフォルダは

C:\Users\boochow\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_ごちゃごちゃした文字列\LocalCache\local-packages\Python310\Scripts

という名前になっています。

(5)続けて(ディレクトリを変えずに)auto-py-to-exeをインストールします。

C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd>python -m pipenv install auto-py-to-exe

ちなみに仮想環境のファイルは、Windowsでは

C:\Users\user-name\.virtualenvs

の下に置かれるようです。

(6)これで準備が整いましたので、auto-py-to-exeを起動します。

C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd>python -m pipenv shell
(prlg2mnlgxd-HPJOiGRn) C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd>auto-py-to-exe

(7)あとは変換したいスクリプトを指定して、Convertボタンを押すだけです。実行ファイルを1つのファイルにしたいときは、「One File」を指定します。

変換してできたスクリプトは5.8MBほどでした。
こんな感じでコマンドプロンプトから利用できます。

C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd>cd output

C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd\output>.\prlg2mnlgxd.exe ..\001_Runner_Brass.prlgprog
Export to: C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd/001_Runner_Brass.mnlgxdprog
Info:   Runner Brass    POLY    SAW     SAW     NOISE

C:\Users\boochow\Documents\pyinstaller-test\prlg2mnlgxd\output>

使い終わった仮想環境の削除もpipenvで行います。

C:\Users\boochow\Documents\pyinsaller-test>python -m pipenv --rm

なお、このPyInstallerが何をやっているのかについては、以下の記事が参考になります。

PyInstallerを使ってみた - Qiita
PythonのスクリプトをまとめてWindows用の実行ファイルに変換できる、PyInstallerを使ってみました。いろいろと躓いたので忘れないうちにメモ書きです。PyInstaller自体の…

コメント