我试图弄清楚如何从 C 中使用 Python 解释器,但我遇到了PyEval_EvalCode
. 基本上,我正在编写一个 C 函数,它接收任意 Python 代码字符串,编译它,执行它,然后打印出结果。
问题是当我打印出结果时,我总是得到None
,即使表达式显然没有计算为None
。
这是代码(为清楚起见,删除了错误检查和引用计数):
void eval(const char* s)
{
PyCodeObject* code = (PyCodeObject*) Py_CompileString(s, "test", Py_file_input);
PyObject* main_module = PyImport_AddModule("__main__");
PyObject* global_dict = PyModule_GetDict(main_module);
PyObject* local_dict = PyDict_New();
PyObject* obj = PyEval_EvalCode(code, global_dict, local_dict);
PyObject* result = PyObject_Str(obj);
PyObject_Print(result, stdout, 0);
}
我尝试使用"5 + 5"
作为输入调用此函数,并显示None
. 我使用PyEval_EvalCode
不正确吗?