最近お客様の作業を自動化するツールを作成して、wxpythonでGUI化しました。
「このままだと納品先のPCで環境構築しないと使えないよなー」と思いexe化する方法はないかと探したところpyintallerを見つけました。
実際に使ってみて簡単にexe化できて納品しても問題なさそうだったのでおススメです。
他にもexe化する方法はあり、起動が高速なものもあるようですがそこまで複雑なものでなければ十分かと思います。
exeは以下の2手順で作成できます。(Pythonは3を想定)
①pipでインストールして
pip install pyinstaller
②以下のコマンドを実行
pyinstaller [Pythonファイル名] [オプション]
例)pyinstaller Hoge.py –noconsole –onefile –clean
noconsole
実行中にコンソールを出さないようにします。
onefile
付けないと複数フォルダができてdistフォルダを納品先に渡す必要があります。
付けるとexeファイルのみが出来上がります。(つけないときより起動が遅くなる)
clean
付けなくても特に大丈夫そうでしたが一応付けました。
※ ほかにもあるようですが使いそうなのはここら辺なイメージです
若干ハマったのが、開発をMacで行いWindowsでexeを実行したところ、コンソールが立ち上がりまくった現象でした。
「noconsole指定してるのに何で?」と思ってpyinstallerについて調べまくったのですが、結局multiprocessが原因でした。
処理を高速化するためにmultiprocessを使っていたのですが、Windowsだと以下を実施していないとコンソールが出るとのこと。
multiprocessing.freeze_support()