модуль Python - PullRequest
       22

модуль Python

18 голосов
/ 18 октября 2008

Есть ли способ заставить модуль python загружать dll в каталог моего приложения, а не в версию, поставляемую с установкой python, без внесения изменений в установку python (что затем потребует от меня установки установщика, и будьте осторожны Я не ломал другие приложения для людей, переписывая модули Python и меняя глобальные версии dll ...)?

В частности, я бы хотел, чтобы python использовал мою версию sqlite3.dll, а не версию, поставляемую с python (она более старая и не имеет модуля fts3).

Ответы [ 3 ]

25 голосов
/ 18 октября 2008

Если вы говорите о библиотеках модулей Python, тогда просто измените sys.path. Однако, если вы говорите о DLL , связанных с этими DLL; то есть libfoo.dll, от которого зависит foo.pyd, тогда вам нужно изменить переменную окружения PATH. Я писал о , делающем это для PyGTK некоторое время назад , но в вашем случае я думаю, что это должно быть так просто:

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

Это вставит my-app-dir в начало вашего пути Windows, который, как я полагаю, также контролирует порядок загрузки для DLL.

Имейте в виду, что вам нужно будет сделать это перед загрузкой рассматриваемой DLL, т. Е. Перед импортом чего-либо интересного.

sqlite3 может быть чем-то особенным, так как он распространяется с Python; очевидно, довольно сложно проверить это быстро, поэтому я не проверял sqlite3.dll специально.

6 голосов
/ 18 октября 2008

Ладно, Python всегда загружает dll в тот же каталог, что и файл pyd, независимо от того, какие пути python и os установлены.

Поэтому мне нужно было скопировать _sqlite3.pyd из python / v2.5 / DLLS в каталог моих приложений, где находится новый файл sqlite3.dll, чтобы он загружал мою новую dll, а не ту, которая поставляется с python (так как Похоже, что pyd-файлы следуют за PYTHONPATH, хотя сами эти файлы не выполняются).

0 голосов
/ 18 октября 2008

Если ваша версия sqlite находится в sys.path до системной версии, она будет использовать это. Таким образом, вы можете поместить его в текущий каталог или изменить переменную окружения PYTHONPATH, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...