Pythonのアプリケーション化 (Pyinstaller)

Share on:
			<blockquote><p>

PyInstaller is a program that freezes (packages) Python programs into stand-alone executables, under Windows, Linux, Mac OS X, FreeBSD, Solaris and AIX.

ということで、Pyinstallerなるものがあるらしい。学科内ではあまり用途が思いつかないけど、個別に環境構築やらするぐらいなら、アプリ配布の方が都合が良いというケースでは便利そうか。

試しに使って見た限りでは、

  • インストール: pip3 install pyinstaller
  • 適当なサンプルスクリプト用意。
  • アプリケーション化: pyinstaller –onefile script.py

するだけで scirt という名前のアプリケーションが作れるという。ターミナルに標準出力するスクリプトから作成したアプリだと、アプリ起動するとターミナルが起動して実行されます。出力終わったら瞬時に終了するのでtime.sleep()とか入れないと見れないけど(ぉ)。ターミナル側の設定で「シェルが終了したら自動でウィンドウを閉じる」の設定が影響してるらしい。これをOFFにしとくと自動で終了はしなくなるけど、不便だな。自動でアプリを終了しないようにするオプションがありそうなんだけど、軽く調べる限りでは見当たらない模様。無いのかなー。

P.S.
今回、理学部修士の学生から「Pythonのexe化」について相談したいという連絡が届いて、初めてPyinstallerなるものの存在を知りました。私の環境だとOS違うしPyinstaller使ったこと無いという状況でしたが、先方はプログラミング初心者ということもあってそれでも話を聞いて欲しいということで相談にのることに。結果としてはその場での解決はできなかった(ごめんなさい)けど、怪しいポイントとしてはAnacondaかなぁと。そう考えた理由は、Python標準ライブラリで済む範疇のプログラムならexe化できるところは確認できたけど、numpy使ってると失敗するという状況だったので。アプリケーションは作れるけど、途中でTypeError等エラー出まくりになアプリになるという。Anaconda環境下にpipでpyinstallerをインストールしたようですが、conda使うのが良いのかもしれない。いずれにしても、可能ならアプリ化じゃなくてスクリプト自体の配布を選択するが面倒事少なそうな気がします。

先日の質問話したからという訳ではないですが、プログラミングの授業を持つようになって、シラバス・ブログでそのことを書く頻度が増えてからメールなりでの「学科外からの相談」が増えてます。こういうのも「動機があって行動する人はする」という一例ですね。授業にかぎらず論文読んでて分からないところがあったら著者に連絡取るとか、ダメ元で行動するというのはやるに越したことはない。