python-skripte in c importieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Mittwoch 11. Oktober 2006, 21:03

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?
http://www.cs.unm.edu/~dlchao/flake/doom/
BlackJack

Mittwoch 11. Oktober 2006, 22:45

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.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Donnerstag 12. Oktober 2006, 16:02

@blackjack:
das war das erste mal seit langer zeit, dass ich mir wirklich unsicher war.
sonst wollen es die leute ja immer andersrum.
http://www.cs.unm.edu/~dlchao/flake/doom/
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Donnerstag 12. Oktober 2006, 17:37

Oder das ganze Skript mit Pyrex in C umwandeln und kompilieren.
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Freitag 13. Oktober 2006, 13:34

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
BlackJack

Freitag 13. Oktober 2006, 16:05

``-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
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 13. Oktober 2006, 16:49

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...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Sonntag 15. Oktober 2006, 18:52

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)
http://www.cs.unm.edu/~dlchao/flake/doom/
Antworten