ホーム < ゲームつくろー! < IKD備忘録

Visual Studio Code + Python
Python製のexe作ってもいいじゃない

(2019. 11. 25)


 Pythonはスクリプト言語なのでPythonが動く環境があればどのプラットフォームでも動作します。でも、これは逆に言えばPythonを導入していない環境では動かないという事でもあります。「四の五の言わずにPython入れればいいじゃん」と思うかもしれませんが、プログラムとは縁が遠い人や顧客先のPCにPythonを入れるのはかなりはばかれます。マニュアル作って「Python3.6をダウンロードしてインストールして下さい」とすると、大抵うまく動かないからヘルプ!という声が戻ってきます。それは配布量が多くなるとヤバイレベルに達したりもする訳です。また、スクリプトをそのまま渡すとプログラム資産の漏洩にもなります。作ったスクリプトを外にそのまま出す会社は普通ありません。

 そこでPythonで作ったアプリをexeファイル化すると上の問題のほとんどが解決してしまいます。そんな方法無いのかなーと探してみたら見つかりましたのでご紹介します。参考にさせて頂いたサイトはこちらになります。誠にありがとうございます m(_ _)m

Samurai Blog: PythonスクリプトをWindows環境で動くexeファイルにしよう!(writer 遠藤貴大 様)



@ Pyinstallerを導入

 Pythonのコードをexeにする方法の一つしてPyinstallerというライブラリを導入するとめちゃくちゃ簡単にexe化出来ます。本家はgithubで公開されていて、2019.11現在Python3.7まで対応しているようです。導入方法も極めて簡単。VS CodeのTerminalから、

python -m pip install pyinstaller

とするとダウンロード&インストールされます。



A exeファイル化

 exe化はコマンドラインから行います。動作可能な.pyを作成した後、VS CodeのTerminalから、

pyinstaller ***.py

とするとexeへの変換プロセスが走ります。かなり長いので気長に待ちましょう。終わるとそのスクリプトがあった場所に「dist」というフォルダが出来ます。その下に指定のpythonファイル名のexeファイルと実行に必要なデータが格納されている同名のフォルダが作成されます。一緒に作成されるbuildフォルダは作業フォルダなので削除しても構いません。

 この方法は簡単なのですが、exeファイルとデータフォルダをワンセットで配布しないとちゃんと動きません。それはちと不便です。それよりもすべてのデータをexeに含めてしまった方が配布等しやすくなります。それには先のコマンドにonefileオプションを追加します:

pyinstaller ***.py --onefile

もしくは、

pyinstaller ***.py -F

これでexeだけが作成されます。-Fと--onefileはどちらでも構いません。



B 万能では無いので注意

 Pyinstallerは簡単にexeを作ってくれるのですが、pythonを直接実行した時は動いてもexeの時にうまく動かない事があるので万能ではない事を留意しておいてください。実際私も色々作ってみましたが、ディープラーニングなpythonコードはexeでエラーが出てしまいました。原因は良く分かりませんが、外部ライブラリがあるとダメなのか、それとも参照が深すぎるとうまくいかないのか…。んー。

 でもpythonからexeが作れるというのは有難い事です。C++やC#よりも気軽にコーディングできて、豊富なライブラリを駆使して様々な事がさくっと出来るのがpythonの良い所ですから。上手に使っていけば色々潰しが利きそうです。