挙動が変わりまくる

先日からなんとかmacOS上で作成したPython + PyQt5 + sqlite3のアプリを配布しようとしている件で、実はアプリの状態は3つあることが分かった。

まずはスクリプトのままの状態。

次にpyinstallerで実行ファイル化したもの

そして最後に実行ファイルを一度zipファイルに圧縮し、別サーバにアップロードした後、ダウンロードして解凍したもの

なんと2番目と3番目は違うのだ。それもセキュリティ的な扱いが異なるだけでなく、未だによく分からない挙動変化がある。

具体的には、2番目の状態の時はsqlite3から読み出した情報をファイルに書き出すと、UTF8のまま書き出される。

ところがバイナリとしては変わっていないはずであるにも関わらず、3番目の状態の時にはおそらく英数字以外は書き出せずにエラーとなる。

元々はデータエクスポートをしようとするとすぐアプリが落ちるため四苦八苦しながら原因追求していたのだが、エラー発生時には全て例外処理で飛ばすようにしてとにかく最後まで処理が完了するようにしたところ、妙にファイルサイズが小さい。CSVファイル形式なのだけれど、開けてみると行によっては列がずれている。つまり出力されていない。

そしてCSVファイルをNumbersで開いていたときには気付かなかったのだけれど、2番目の状態で書き出されたファイルをExcel2016で開けると文字化け。

ここら辺りで、そういえばファイル書き出し時にShiftJIS指定をしていなかったことに気づき、対策をしたところ、ようやく3番目の状態でもアプリが落ちず、しかも情報が全て書き出されるようになった。

 

それ以外にもなんかエラーが起きていたけれど、これも例外処理で飛ばしてエラーが出なくなったな。一見正常に動いているけれど、う〜ん、なんか不安だ。