Заставьте Python искать Lib в другом месте, используя Py_SetPath().Python

Программы на Python
Anonymous
Заставьте Python искать Lib в другом месте, используя Py_SetPath().

Сообщение Anonymous »

Я внедрил Python в приложение foo.exe. Когда он запускается, Python вызывается и немедленно ищет Lib. Единственный способ заставить его работать — это поместить Lib (библиотеку модулей каталогов Python) в папку foo.exe.

Есть ли способ перенаправить Python для поиска в другом месте, например Python/Lib ? Я не могу изменить PATH (это Windows) и не хочу взламывать исходный код Python.

По сути, я не могу заставить Py_SetPath() работать, и мне не удалось найти практических примеров в Интернете.
Обновление:

ОК, это работает:

Код: Выделить всё

  #define MYMAXPATHLEN 1000
static wchar_t progpath[MYMAXPATHLEN + 1];

wchar_t* pdir = L"\\My_New_Location\\Python\\Lib";
wchar_t* pdelim = L";";
wchar_t* pypath = NULL;
GetModuleFileNameW(NULL, progpath, MYMAXPATHLEN);
reduce(progpath);
wcscat(progpath,pdir);
// I get the present module path and add the extra dirs to access Lib code

wcscat(progpath, pdelim);  // I add a path delimiter

pypath = Py_GetPath();
wcscat(progpath, pypath);
// I add the paths that Py_GetPath() produces.

Py_SetPath(progpath);

Py_Initialize();
Я также вызываю Py_SetProgramName(); ПОСЛЕ Py_Initialize(); Я не уверен, нужны ли все эти дополнительные вещи, но более мелкие решения, похоже, терпят неудачу.

Похоже, что вызов Py_SetProgamName() ПОСЛЕ инициализации очень важен для наличия встраивание вызова работает правильно.

Подробнее здесь: https://stackoverflow.com/questions/500 ... py-setpath

Вернуться в «Python»