py2app

Pythonで作ったアプリを他人に配布して、これで処理してください、というのはなかなか難しい。Python本体以外にも外部ライブラリも使ったりするので、それらをすべてこちらと同じようにそろえてもらわないといけないからだ。なんとかして単独の実行ファイルに仕立て上げられないだろうか?

…と思う人たちは世の中に他にたくさんいて、例えばmacOS向けだとpy2appというツールがある。これを用いてアプリ化したところ、確かにダブルクリックで起動し、PyQt5で構築したGUIもそのままきれいに見えているし、ボタンもちゃんとクリックできる。でもsqlite3のデータベースにはアクセスできない。もともとはデータベースアクセスのための簡易インタフェースアプリなのでこれでは意味がない。

物は試し、と思ってsetup.pyのデータを指定するところにデータベースを指定すると、データベースが巨大なので数GBという巨大なアプリが出来上がった。これをダブルクリックで起動すると、もしかしてファイル全てを読み込んでいるのだろうか、かなり時間がかかってようやく起動した。そして今度はなんとボタンをクリックすると対応するデータが表示されるようになった。めでたしめでたし、これで一件落着かと思ったら件数の少ないクエリをエクスポートしようとすると始まってすぐで落ちてしまう。システムのはいたエラーログを見てもよくわからないが、おそらくメモリ不足に陥っているのではないかと推察される。

う~ん、なんとかアプリ作成時に埋め込まずにアプリ外のデータベースにアクセスできるようにできないものだろうか。