Seite 1 von 1

python-skripte in c importieren

Verfasst: Mittwoch 11. Oktober 2006, 21:03
von murph
hi!
ist es möglich, python-skripte in c zu importieren?
oder muss man den pythonskript immer als subprocess von dem c-programm ausführen und dann das ergebnis über ein anderes medium (sockets, textdateien, ...) wieder zurücktransferieren?

Verfasst: Mittwoch 11. Oktober 2006, 22:45
von BlackJack
Ich habe es mal nach `Allgemeine Fragen` verschoben weil das ganz bestimmt nicht Offtopic ist.

Du kannst den Python Interpretierer in C Programme einbetten und über die entsprechende API auch Python-Funktionen aufrufen und Daten austauschen. In der Dokumentation gibt's über "embedding" ein eigenes Kapitel.

Verfasst: Donnerstag 12. Oktober 2006, 16:02
von murph
@blackjack:
das war das erste mal seit langer zeit, dass ich mir wirklich unsicher war.
sonst wollen es die leute ja immer andersrum.

Verfasst: Donnerstag 12. Oktober 2006, 17:37
von birkenfeld
Oder das ganze Skript mit Pyrex in C umwandeln und kompilieren.

Verfasst: Freitag 13. Oktober 2006, 13:34
von george
Hey,

bin gerade dabei dieses Thema zu bearbeiten. Ich möchte aus C heraus Funktionalität aus Python aufrufen.
Zum Probieren haben ich jetzt mal das Beispiel aus dem Kapitel "embedding"
genutzt.

Code: Alles auswählen

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}
und mit gcc kompiliert.
Ständig bekommen ich die Fehlermeldung vom Linker:
[Linker error] undefined reference to `_imp__Py_Initialize'
Darauf hin habe ich mal im Internet gesucht und den Hinweis gefunden das man noch einmal mit -L"Python24/libs" die Library mit linken soll.
Dies habe ich gemacht. Aber ohne Erfolg.
Habt ihr eine Idee???

greets george

Verfasst: Freitag 13. Oktober 2006, 16:05
von BlackJack
``-L`` gibt nur Pfade an in denen gesucht wird. Linken einer Bibliothek geht mit ``-l`` gefolgt von dem Bibliotheksnamen ohne führendes "lib". Also bei mir gehts zum Beispiel mit folgender Zeile:

$ gcc -o test test.c -I/usr/include/python2.4 -lpython2.4

Re: python-skripte in c importieren

Verfasst: Freitag 13. Oktober 2006, 16:49
von jens
murph hat geschrieben:ist es möglich, python-skripte in c zu importieren?
Wobei... Normalerweise würde man dass IMHO ehr anders herrum machen! Also CPU-Lastige Sachen, die einfach nicht schnell genug werden wollen, in C auszulasten :lol:
Wobei... Man sollte erstmal warten, ob die Performance wirklich nicht ausreicht! Ist nämlich meist nicht der Fall...

Verfasst: Sonntag 15. Oktober 2006, 18:52
von murph
mir war schon klar, dass man das eher andersrum machen würde,
aber manchmal sind die sachen zu komplex, um sie in c umzuschreiben.
dann wäre es schlauer, die sachen in ein c-skript zu importieren.
(das dreht sich um größere projekte, wo es bereits python-teile gibt)