मैं अपने पालतू परियोजना में कुछ पायथन एम्बेड करने की कोशिश कर रहा हूं। मैं निम्नलिखित कोड को अपनी समस्या को कम कर दिया:(पायथन सी एपीआई) PyRun_StringFlags अंतर्निहित अंतर्निहित कार्यों?
#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;
}
(। मैं जानता हूँ कि मैं किसी भी संदर्भ को साफ नहीं कर रहा हूँ यह एक उदाहरण है।)
यह
c++ $(python-config --includes) $(python-config --libs) test.cpp -o test
द्वारा संकलित किया जा सकता
अगर मैं इसे चलाने मैं निम्नलिखित त्रुटि मिलती है:
$ ./test
Traceback (most recent call last):
File "<string>", line 3, in <module>
NameError: name 'dict' is not defined
ऐसा लगता है builtin कार्यों लोड नहीं होतीं। मैं import
कुछ भी नहीं कर सकता। मुझे लगता है कि __import__
गुम है। मैं लापता मॉड्यूल कैसे लोड कर सकता हूं या जो भी मुझे याद आ रहा है?
धन्यवाद।
धन्यवाद! 'PyEval_GetBuiltins' बिल्कुल वही था जो मुझे चाहिए था। मुझे नहीं पता था कि इसे कैसे ढूंढें। – Simon