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<