Получить Python для поиска в другом месте для Lib с помощью Py_SetPath () - PullRequest
0 голосов
/ 26 апреля 2018

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

Есть ли способ, которым я могу перенаправить Python для поиска в другом месте, например Python/Lib? Я не могу изменить PATH (это окна), и я не хочу взламывать исходный код 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 () ПОСЛЕ инициализации очень важен для правильной работы вызова встраивания.

1 Ответ

0 голосов
/ 26 апреля 2018

Перед импортом библиотеки запустите следующую строку:

sys.path.append('C:\path to Lib')

Подробности можно найти здесь .

...