1

私の 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 ごとにマニフェストを含める必要がありますか?

前もって感謝します。

4

3 に答える 3

3

未来からの親愛なる人々:これが私たちがこれまでに理解したことです...

受け入れられた答えは、彼らがどのdllをどの場所にコピーしたかを実際には示していません。sqldriversexeファイルとqtdllが存在するディレクトリ内のドライバーをコピーすることで修正できました(PySideを使用していますが、PyQt4でも動作するはずです)。setup.pyの場合:

setup(
    ...,
    data_files = [('sqldrivers', ('C:\Python27\Lib\site-packages\PySide\plugins\sqldrivers\qsqlite4.dll',))],
    ...,
)
于 2012-11-19T11:35:12.650 に答える
0

SOLiteを再インストールするか、DLLを正しい場所に配置したかどうかを確認してください。これを使用するものを開発するには、MySQLDLLがSystem32ディレクトリにある必要があることを覚えています。

よろしく。

于 2009-10-16T01:16:03.333 に答える