(Python C API) PyRun_StringFlags brak wbudowanych funkcji?
Usiłuję osadzić jakiś python w moim projekcie pet. Zmniejszyłem swój problem do następującego kodu:
#include <Python.h>
#include "iostream"
int main(int argc, char *argv[])
{
Py_Initialize();
PyObject *globals = Py_BuildValue("{}");
PyObject *locals = Py_BuildValue("{}");
PyObject *string_result = PyRun_StringFlags(
"a=5\n"
"s='hello'\n"
"d=dict()\n"
,
Py_file_input, globals, locals, NULL);
if ( PyErr_Occurred() ) {PyErr_Print();PyErr_Clear();return 1;}
return 0;
}
(Wiem, że nie czyszczę żadnych odniesień. To jest przykład.)
może być skompilowany przez
c++ $(python-config --includes) $(python-config --libs) test.cpp -o test
Jeśli go uruchomię, pojawia się następujący błąd:
$ ./test
Traceback (most recent call last):
File "<string>", line 3, in <module>
NameError: name 'dict' is not defined
Wygląda na to, że wbudowane funkcje nie są załadowane. Ja też nie mogęimport
byle co. rozumiem__import__
brakuje. Jak mogę załadować brakujące moduły lub cokolwiek mi brakuje?
Dzięki.