【发布时间】:2017-02-24 01:44:51
【问题描述】:
我需要在 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 中运行它。
【问题讨论】:
-
@martineau 但即使是全局变量也返回 NULL!这是否意味着这不是获取变量的适当方法?因为我已经接受了这个答案。 stackoverflow.com/questions/40041498/…
-
@martineau 验证
PyRun_SimpleString()是否正常工作非常容易。我可以打印东西并分配东西,它可以工作。您会建议修复该示例代码吗? -
@martineau 这也返回 NULL。我在第一次回复你时提到了这一点:-)
-
@martineau 使用您提供的命令打印
a工作并打印5。同样使用print(locals())打印locals()会打印一个包含a的dict。 -
@martineau :( ...
标签: python c++ c python-c-extension python-extensions