Можно ли изменить PYTHONPATH во время выполнения?

У меня было приложение C ++, динамически связанное с интерпретатором Python. Я хочу иметь возможность импортировать модули Python из определенного каталога. Я хочу изменить PYTHONPATH для своего процесса, чтобы sys.path включал пути, которые я добавил в PYTHONPATH. Похоже, что это работает согласно этой документации:

http://docs.python.org/c-api/intro.html#embedding-python

Однако, когда я печатаю sys.path из Python -land он имеет исходное содержимое PYTHONPATH, а не то, которое я установил. Вот пример того, что я делаю (используя Boost.Python):

int main(int argc, char* argv[])
{
  _putenv_s("PYTHONPATH", "C:\\source\\\\modules");
  Py_Initialize();
  object main = import("__main__");
  object global = (main.attr("__dict__"));
  exec("import sys\nprint sys.path"), global, global);
}

PS - Я знаю, что есть другие способы достичь моей цели, но я спрашиваю не об этом. Мне интересно, почему Py_Initialize () не использует текущее значение PYTHONPATH при настройке sys.path. Или, может быть, я Вы неправильно поняли, как это должно работать?

9
задан Amro 19 August 2012 в 09:17
поделиться