Python C扩展:PyEval_GetLocals()返回NULL
我需要在C / C ++中从Python读取局部变量。 当我尝试PyEval_GetLocals
,我得到一个NULL。 尽管Python已初始化,但会发生这种情况 以下是一个最小的例子。
#include #include 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<