Мне нужно оценить выражение Python из C++. Этот код, кажется, работает:Почему PyRun_String не оценивает литералы bool?
PyObject * dict = PyDict_New();
PyObject * val = PyRun_String(expression, Py_eval_input, dict, 0);
Py_DECREF(dict);
К сожалению, она не ужасно, если выражение "True" в "False" (то есть, Допустимы 0 и PyErr_Occurred() возвращает истину). Что я делаю не так? Разве они не должны оценивать Py_True и Py_False соответственно?
Что показывает PyErr_Print(), когда вы вызываете его после сбоя? –
Я знаю, я должен был сделать это раньше, но я не могу назвать PyErr_Print() в моем приложении по ряду причин. Во всяком случае, я воспроизвел это в изолированном файле, и это то, что я получил: NameError: имя 'False' не определено !! Похоже, этот литерал недоступен из C ...! – UncleZeiv
Так как это отвечает на ваш вопрос, вы должны отправить его в качестве ответа. –