まずは結論から。
負担を軽減したいなら、とにかくPythonの2系でPyQt4を使い、PyInstaller2.1でstand-aloneなアプリを作りましょう。
ツールの導入もフォルダを解凍するだけと、とても簡単です。
たとえQt5を使って書いたソースが手元にあるとしても、Qt4向けに修正する価値はあります。特に基本的な機能のみを使ったアプリなら、Qt5じゃなくても動くはずです。
私はYosemite環境でVirtual Box + Mavericksを起動させ、以下のツールを試しました。基本的にMacPortsを使って、なるべく綺麗な環境で行っています。
環境
・Python3.4.1
・PyQt5.3
・sip4.16.4
ツール
・py2app
・cx_Freeze
とりあえず二大メジャーツールというべき、py2appとcx_Freezeを試しましたが、結局Qt4対応のソースに書き直して、PyInstallerで作りました。
このツールの良いところはデフォルトで複数の有名なライブラリに最適化されていることです。それにQtも含まれるため、非常に簡単にapp化できるのだと思います。
対応しているライブラリはこちら
上記二つのツールを使う際の問題点は、いわゆるsemi-stand-aloneなアプリになりやすいことです。つまり実行可能形式なんだけれど、環境に依存するという形式です。他の環境で試すまで分からなかったりと困った子です。外部ライブラリの取り込みが難しいんですよね。。。そして上手くいかない際の原因が分かりづらいです。。。
一方のPyInstallerですが、こちらはすでにアプリなため、ただ公式サイトからダウンロードしてきて解凍するだけです。
PyInstaller
以前の2.0ではビルドなどに様々なコマンドが必要だったようですが、現在は本当に数ステップです。
①本家サイトから取ってきたファイルを解凍。
②解凍して出来たPyinstallerというフォルダに、app化したいPythonスクリプトを置く。
③その階層で次のコマンドを叩く。
python pyinstaller.py --windowed your_source.py -i your_icon.icns
下線部分は適宜、ご自身の素材に読み替えてください。アイコンは使いたいものがある場合だけのオプションです。デフォルトのアイコンは微妙です。他のオプションは公式サイトからどうぞ。
--windowedコマンドは、UNIXの実行可能形式のみではなく、app形式を生成するためのオプション(だったはず)です。
コマンド自体はたったこれだけです。これでご自分のスクリプト名がついたフォルダが、Pyinstallerのフォルダ内に生成されます。いくつか階層を下れば、app形式のファイルがあるはずです。
私が使った環境です。MacPortsを使って導入しています。
Python27
py27-sip
PyQt4
PyInstaller(公式サイトからダウンロード)
PyQt5で書いたソースをPyQt4に書き直すのは気が引けますが、実際はQtWidgetsをQtGuiに置換(Qt5で独立した部分です)してしまえば、あとの修正部分は驚くほど少ないはずです。
私はencodeの部分で少し分かりにくい齟齬が発生しましたが、それも他のapp化ツールの情報収集に比べれば微々たるものでした。
ライブラリも出そろってきてだいぶ安定してきた3系ですが、それでもQtを使ったアプリの配布用作成には、この記事で挙げているバージョンを採用することで悩む時間がずいぶん減ると思いますよ。
0 件のコメント:
コメントを投稿