質問

Pythonインストールに変更を加えずに、Pythonインストールに付属するバージョンではなく、Pythonモジュールにアプリケーションディレクトリのdllをロードさせる方法はありますか(インストーラーを作成する必要があり、注意が必要です) pythonモジュールを上書きし、dllバージョンをグローバルに変更することで他のアプリを壊しませんでした...)

具体的には、pythonに付属しているバージョン(古いもので、fts3モジュールがないようです)ではなく、私のバージョンのsqlite3.dllを使用するようにします。

役に立ちましたか?

解決 2

OK terns out pythonは、pythonおよびosパスの設定に関係なく、常にpydファイルと同じディレクトリにdllをロードします。

だから、_sqlite3.pydをpython / v2.5 / DLLSから新しいsqlite3.dllがあるアプリディレクトリにコピーする必要がありました。 pydファイルは、actaul dll自体はいけないものの、PYTHONPATHに従うようです。

他のヒント

PythonモジュールDLLについて話している場合は、単に sys.path を変更するだけで問題ありません。ただし、DLLについて話している場合は、それらのDLLに対してリンクします。つまり、 foo.pyd が依存する libfoo.dll の場合、PATH環境変数を変更する必要があります。 少し前にPyGTKでこれを行うについて書いたが、あなたの場合はそうすべきだと思う次のようにシンプル:

import os
os.environ['PATH'] = 'my-app-dir' + os.pathsep + os.environ['PATH']

これにより、Windowsパスの先頭に my-app-dir が挿入されます。これはDLLのロード順序も制御すると考えています。

問題のDLLをロードする前、つまり興味深いものをインポートする前に、これを行う必要があることに注意してください。

sqlite3は、Pythonで配布されるため、少し特殊な場合があります。これをすばやくテストするのは明らかにややこしいので、 sqlite3.dll を特に確認していません。

sqliteのバージョンがsys.pathにある場合、システムバージョンのにそれが使用されます。そのため、それを現在のディレクトリに置くか、 PYTHONPATH 環境変数を変更してそれを行うことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top