私の PyQt アプリケーションは、Linux で実行している場合、Windows ビルド環境で実行している場合、または py2exe でビルドされたマシンでフリーズしている場合に正常に動作します。しかし、凍結された実行可能ファイルとそのサポート ファイルを別のマシンに移動すると、データベース ドライバをロードできなくなります。
私が Python2.5 と以前のバージョンの PyQt と py2exe を持っていたとき、それはうまくいきました。しかし、ツールチェーンをアップグレードした後、次のエラーが発生します。
- dbname.open が false を返す
- lastError(dbname) は「ドライバーがロードされていません」
qsqlite4.dll を置く sqldrivers フォルダーがあります。これは以前のビルド環境で必要でしたが、その DLL を移動または名前変更しても動作は変わりません。それは Qt が見つけられない DLL だと思いますが、Qt にどこを見ればよいかを伝えることができませんでした。
現在、これらのバージョンを実行しています:
- python-2.6.3
- PyQt-Py2.6-gpl-4.6-1
- py2exe-0.6.9.win32-py2.6
Dependency Walker でプロファイリングすると、次のエラーが表示されます:
LoadLibraryW("\application\sqldrivers\qsqlite4.dll") が NULL を返しました。エラー: アプリケーションの構成が正しくないため、このアプリケーションを開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります (14001)。
Dependency Walker に Qsqlite4.dll の詳細を尋ねると、
エラー: "\application\sqldrivers\QSQLITE4.DLL" の Side-by-Side 構成情報にエラーが含まれています。
これで DLL が読み込まれない理由が説明できますが、修正方法はまだわかりません。よく調べてみると、私が呼び出したほとんどの DLL でそのエラーが表示されます。ロードする Qt DLL ごとにマニフェストを含める必要がありますか?
前もって感謝します。