質問
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
環境変数を変更してそれを行うことができます。