Python C 扩展:PyEval_GetLocals() returns NULL

Python C Extension: PyEval_GetLocals() returns NULL

我需要在 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 中,它说如果没有框架 运行,它 returns 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();