У меня было приложение 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. Или, может быть, я Вы неправильно поняли, как это должно работать?