我的C代码定期加载Python脚本并使用Python 3的高级绑定运行它。该脚本第一次运行正常但随后失败并出现语法错误,其中声明了唯一的变量。
该变量在我的脚本中声明为空列表,因此我猜测documentation注释表明 \renewcommand\thesection{}
没有正确重置某些库,这里不适用:
Python脚本中的相关行:
Py_Finalize()
我的代码:
result = list()
我还尝试将PyObject *eval_module;
PyObject *eval_dict;
PyObject *eval_value;
char *ret;
Py_Initialize();
PyRun_SimpleString(script);
eval_module = PyImport_AddModule((char *) "__main__");
eval_dict = PyModule_GetDict(eval_module);
eval_value = PyDict_GetItemString(eval_dict, "output");
char *python_ret = PyBytes_AsString(eval_value);
if(python_ret != NULL) {
python_ret = strdup(python_ret);
Py_Finalize();
return python_ret;
}
Py_Finalize();
return NULL;
放在Py_Finalize()
之前,但没有帮助。