Python Programm aus C Programm starten

  • Hallo zusammen,

    Ich habe folgendes Problem ich möchte aus einem C Programm ein Pythonprogramm starten und offen halten.
    unten das Test C Programm aus dem das Pythonprogramm pymodmon.py gestartet werden soll.

    bei gcc test.c -o -I /usr/Include/Python3.4

    bekomme ich folgende Fehlermeldung:
    undefined refeence to Py_Initilize
    undefined refeence to PyRun_SimpleFile
    undefined refeence to PY_Finalize


    Leider kenne ich mich in C nicht so gut aus um das Problem zu lösen. Hat jemand eine Idee was ich hier falsch mache.

    Gibt es noch eine andere Möglichkeit ein Python Programm in C zu starten.
    Danke für alle Tipps von euch.
    Guß
    Christian

  • Servus Christian,
    ...
    Py_Initilize();
    PyRun_SimpleFile(file_1, "/home/python pymodmon.py -i Configuration.ini");
    PY_Finalize();
    ...
    [/quote]
    also zunächst mal hast Du da Tippfehler drin ...
    Und dann brauchst Du noch die zugehörige Library, die Du dazubinden musst.
    Das sollte ungefähr so aussehen:

    Code
    gcc main.c -o main -I/usr/include/python2.7 -lpython2.7


    das musst Du halt an Deine Python Version anpassen ...

    cu,
    -ds-


  • also zunächst mal hast Du da Tippfehler drin ...
    Und dann brauchst Du noch die zugehörige Library, die Du dazubinden musst.
    Das sollte ungefähr so aussehen:

    Code
    gcc main.c -o main -I/usr/include/python2.7 -lpython2.7


    das musst Du halt an Deine Python Version anpassen ...

    cu,
    -ds-
    [/quote]

    Hallo dreamshader,

    Danke für den Tipp. Das Programm läst sich nun Compilieren aber beim ausführen bekomme ich folgende Fehlermeldung:

    File "/home/pi/pvlogger/samples/sample1/python pymodmon.py -i Configuration.ini", line 1
    �8�v m m m.7/encodings/__builtin__.pyc

    Hast du noch ein Tipp was das sein kann ?

    Gruß
    Christian


  • Du musst schon die richtigen Calls verwenden - https://docs.python.org/2/c-api/veryhigh.html zeigt klar, das PyRun_Simplefile keine Argumente uebergeben bekommen kann.

    Hallo __deets__
    ich möchte folgendes machen in meinem C Programm sind bestimmte Startbedingungen programmiert wenn diese erfüllt sind läuft zum einen das C Programm in einer Endlosschleife und sammelt Daten von der Seriellen Schnittstelle. Gleichzeitig soll das Python Programm gestartet werden und ebenfalls laufen.
    Nun habe ich in C über den Befehl System("/home/python pymodmon.py -i Configuration.ini") das Python Programm gestartet aber es blockiert dann den Rest des C Programms.
    Geht das eigentlich was ich machen möchte ?
    Wen ja wie über einen Tipp wäre ich dankbar.
    Gruß
    Christian

  • Du kannst die Programme nebeneinander laufen lassen. Es ist allerdings einfacher, von Python aus das C-Programm zu starten.

    Nur hast du dann halt zwei Programme. Und jetzt? Das haettest du auch einfacher haben koennen, einfach ein Shellskript schreiben & beide starten. Die Frage ist, ob die beiden Programme kommunizieren sollen. Und wenn ja, was. Und ob es nicht einfacher waere, alles von *einem* Programm machen zu lassen. Serielle Schnittstellen kann auch Python.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!