我需要在C / C ++中从Python读取局部变量。当我尝试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();
在the manual中,它表示如果没有帧正在运行它会返回NULL,但是......框架正在运行!
我做错了什么?
我在Debian Jessie中运行它。
答案 0 :(得分:0)
在范围内找到访问变量的正确方法是:
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();