如何从Py_CompileString中打印出错误(包括语法)?

时间:2015-01-25 19:22:15

标签: python visual-studio-2010

Py_Initialize();
PyObject* code = Py_CompileString(text, "(text)", Py_single_input);
if (!code) {
    PyErr_Print();
    return;
}

不会产生任何文字。我知道有sys.stderror但除了创建回调和自定义函数之外,还有其他更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

终于发现了这个:

    PyObject *ptype, *pvalue, *ptraceback;
    PyErr_Fetch(&ptype, &pvalue, &ptraceback);
    PyObject* utf = PyUnicode_AsUTF8String(pvalue);
    Assert(utf);
    char* buffer = PyBytes_AsString(utf);