Python integrieren
-
Hallo ich wollte letztens mal versuchen Python in ein C++ Projekt einzubinden.
Ich wollte dazu noch kein boost verwenden.Ich bekomme aber stets folgende Fehlermeldung zu:
#include<Python.h>
no such file or directory
Muss ich diese datei noch zusätzlich installieren (und wenn ja in welchem debian-paket ist sie?)
oder ist es prinzipiell nicht möglich python ohne boost zu integrieren?ich wollte folgendes im netz gefundenes beispiel testen:
#include <Python.h> int main(int argc, char *argv[]) { PyObject *pName, *pModule, *pDict, *pFunc, *pValue; if (argc < 3) { printf("Usage: exe_name python_source function_name\n"); return 1; } // Initialize the Python Interpreter Py_Initialize(); // Build the name object pName = PyString_FromString(argv[1]); // Load the module object pModule = PyImport_Import(pName); // pDict is a borrowed reference pDict = PyModule_GetDict(pModule); // pFunc is also a borrowed reference pFunc = PyDict_GetItemString(pDict, argv[2]); if (PyCallable_Check(pFunc)) { PyObject_CallObject(pFunc, NULL); } else { PyErr_Print(); } // Clean up Py_DECREF(pModule); Py_DECREF(pName); // Finish the Python Interpreter Py_Finalize(); return 0; }
-
Lies doch das Tutorial aus dem du den Code kopiert hast mal ganz
-
Wie soll der Compiler Python.h finden, wenn du sie ihm nicht angegeben hast?
-
naja ich dachte da des in <> klammern war dass er das schon findet, aber anscheinend hab ich eh 2 Python.h
nun hab ich des manuell mit eingebunden und hab das nächste problem:
#include <QtCore/QCoreApplication> #include "/usr/include/python3.1/Python.h" int main() { Py_Initialize(); return 0; }führt zu:
/home/anubis/py/main.cpp:5: undefined reference to `Py_Initialize' ld returned 1 exit statuswas mach ich denn da falsch?
-
was muss ich denn noch einbinden libpython oder so?
weiß leider nicht genau was ich mitlinken muss
-
shisha schrieb:
was muss ich denn noch einbinden libpython oder so?
Oder so... In deinem Fall wäre das libpython3.1.
Am besten benutzt du pkg-config um sowas herauszubekommen, und zwar auch in deinen Makefiles o.ä.:
pkg-config python3 --cflags pkg-config python3 --libs