Pythonでコマンドプロンプトにサヨナラする(4)
pythonでプログラムを作って、実行のたびにコマンドプロンプトを呼ぶのは手間ですね。
それならば、exe化してしまう手段があります。
やり方は意外と簡単です。
準備
pyinstallerを使うので、pipでインストールします。
pip install pyinstaller
exe化
前回(3)のプログラムを「biorhythm.py」という名前で保存しているとします。
これを、exe化してみます。
pyinstaller biorhythm.py --onefile --noconsole
コマンドプロンプトでコレを打ち込みますと、なにやらコチョコチョとプログラムが走りまして、biothythm.pyがあるフォルダにdistフォルダができます。
このフォルダの中に、biorhythm.exeができています。
普通の実行ファイルですので、これをダブルクリックして実行してみてください。
うまく動きましたか?
ひとまず
Pythonプログラムをコマンドプロンプト無しで実行でき、GUI上で入出力を完了できたので、これでコマンドプロンプトにサヨナラできるプログラムは完成と思います。
ただ、例えばbiorhythm.exeの入力ウィンドウで、年月日の入力をミスしたり、何も入力しなかった場合は、エラーの表示が出てしまいます。
このエラーはプログラムを使うユーザーには不要なもの(プログラムの修正はユーザーにはできない)なので、意図しない入力には注意を表示したり対処が必要と考えられます。
また、エラーがでなくても、誕生日入力で未来の年月日を入れても計算結果が出てしまいます。現実には合わないので、「実行可能なバグ」とも言えますので、これにも対処を考えることも必要かもしれません。
このようにたくさん手をかければ使いやすくなりますが、作り手は大変に・・・やればやるほど「ユーザー天国、メーカー地獄」の図式になってしまいます。
でも、ここで作りたいと考えているものはホビープログラムなので、多少の不便など目をつぶることができるならばある程度割り切るのは全然OKと思います。
メモ
・pyinstallerを使うと、exeファイルが巨大になることがあるそうです。
原因は、importするモジュールにあるとか。
・exe化しなくても、.pyファイルをPythonに関連付ける方法でも、ダブルクリック実行は可能です。
ただ、.pyファイルをダブルクリックした場合に実行したいか、プログラムエディタを開きたいかはPythonを使う皆さんにおまかせします。
・コマンドプロンプトにサヨナラしましたが、デバッグはさすがにコマンドプロンプト抜きでは無理ですので、十分にデバッグはしましょう。
・exe化はコンパイルとは違うらしいです。詳しいところはまだ調べていないのですが、リバースエンジニアリングされて困るものは注意したほうがいいかもしれません(あくまで想定ですが)