Frage

Gibt es eine Möglichkeit ein Python-Modul lädt eine DLL in meinem Anwendungsverzeichnis zu machen, anstatt die Version, die mit der Python-Installation kam, ohne Änderungen an die Python-Installation zu machen (die dann erfordern würde ich einen Installer gemacht, und vorsichtig sein, ich habe nicht brechen andere Anwendungen für Menschen, die von overwrting python-Modulen und Ändern dll Versionen globaly ...)?

Insbesondere würde Ich mag Python meine Version des sqlite3.dll zu verwenden, anstatt die Version, die mit Python kam (was älter ist und scheint nicht die FTS3 Modul zu haben).

War es hilfreich?

Lösung 2

Ok es Seeschwalben aus Python immer lädt die DLL im selben Verzeichnis wie die pyd Datei, unabhängig davon, was der Python und os Pfade gesetzt.

So musste ich die _sqlite3.pyd von Python / v2.5 / DLLS in meinem apps Verzeichnis kopieren, wo die neue sqlite3.dll ist, so dass es meine neue DLL laden, anstatt die, die mit Python kommt (da die pyd Dateien scheinen die PYTHONPATH zu folgen, auch wenn die actaul dlls sich nicht).

Andere Tipps

Wenn Sie sprechen über Python-Modul-DLLs, dann einfach sys.path Modifizierung sollte in Ordnung sein. Allerdings, wenn Sie reden über DLLs verknüpft gegen diesen DLLs; das heißt, eine libfoo.dll, die ein foo.pyd abhängig ist, dann müssen Sie Ihre Umgebungsvariable PATH ändern. Ich schrieb über dies vor eine Weile für PyGTK tun, aber in Ihrem Fall, dass ich denke, es sollte sein so einfach wie:

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

Das wird einfügen my-app-dir an der Spitze des Windows-Pfad, die ich auch glaube, steuert die Last Ordnung für DLLs.

Beachten Sie, dass Sie dies tun müssen, bevor die DLL in Frage geladen, das heißt, bevor interessant etwas zu importieren.

sqlite3 kann ein bisschen ein Sonderfall sein, obwohl es da mit Python verteilt wird; es ist offensichtlich etwas schwierig dies schnell zu testen, so habe ich nicht sqlite3.dll speziell geprüft.

Wenn Ihre Version von SQLite in sys.path ist vor die Systemversion wird es verwendet diese. So können Sie entweder im aktuellen Verzeichnis abgelegt oder die PYTHONPATH Umgebungsvariablen ändern, das zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top