Мне нужно читать локальные переменные из Python в C / C ++. Когда я пытаюсь PyEval_GetLocals
Я получаю NULL. Это происходит, хотя Python инициализирован. Ниже приведен минимальный пример.
#include <iostream>
#include <Python.h>
Py_Initialize();
PyRun_SimpleString("a=5");
PyObject *locals = PyEval_GetLocals();
std::cout<<locals<<std::endl; //prints NULL (prints 0)
Py_Finalize();
В руководство, он говорит, что возвращает NULL, если ни один кадр не запущен, но … работает кадр!
Что я делаю неправильно?
Я запускаю это в Debian Jessie.
Оказывается, правильный способ доступа к переменным в области видимости:
Py_Initialize();
PyObject *main = PyImport_AddModule("__main__");
PyObject *globals = PyModule_GetDict(main);
PyObject *a = PyDict_GetItemString(globals, "a");
std::cout<<globals<<std::endl; //Not NULL
Py_Finalize();
Других решений пока нет …