2013年10月9日水曜日

PyInstallerで簡単exeファイルの作成

py2exeからPyInstallerに乗り換えるとすこぶる簡単だったというはなし。

PyQtで作ったGUIアプリを職場のみんなに使ってもらうにはexeファイルを作成しなければならない状況にあって、以前はpy2exeでmatplotlibやPyQt4のアプリをexeファイル化していたが、py2exeを実行すると
The following modules appear to be missing
と言うエラーメッセージが 出てうまくいかない。どうもオプションでbundle=1と設定するとうまくいかないようだ。(bundle=1はDLLなどを1つexeに詰め込む設定。bundle=3だとうまく動いた。)
しかも何が足りないって、IronPythonとか使った記憶がないモジュールばかりなので、ちょっとわけがわからなくなった。

StackOverflowなんかを見てみるとpy2exeは止めてPyInstallerを使えって回答が多かった。
なんとなくPyInstallerはインストーラーを作るイメージがあって使ってなかったけど、exeファイルもつくれるようだ。食わず嫌いでした。


ほんで、実際にPyInstallerを使ってみたらすこぶる簡単だった。今までの時間は何だったのか。
インストールの仕方など調べてみると少し古いのもあって混乱したので、ここに簡単な使い方を紹介しておく。


1. インストール

PyInstallerのドキュメントにインストール方法が書いてある。Installing Using pipに従うと、
>pip install pyinstaller
とするだけ。
その下にPyWin32が必要とか書いてあるけど、今回は特に何もしなかった。多分Python(x,y)をインストールしたときに色々一緒にいれたので、そのときに入っていたのかもしれない。


2. exeファイル化

Pythonのスクリプトファイルがある場所に移動して、
>pyinstaller hoge.py

とするだけ。自動で必要なファイルやらなんやらを取得してくれるらしい。
buildとdistというフォルダが生成されてdistの中にあるexeファイルを実行ればpythonで作成したアプリが動作する。

今回はexeにすべて詰め込みたかった+実行時コマンドプロンプトを表示させたくなかったので
>pyinstaller hoge.py --onefile --noconsole 
というオプションを加えた。オプションについてはここを参照。

今回はPyQt4を使ったものをexe化したけど、matplotlibやOpenGLでもこんなに簡単やったらいいなぁ。

0 件のコメント:

コメントを投稿