Einbetten eines interaktiven Python Interpreters in eigenes Programm

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
allesquarks
User
Beiträge: 1
Registriert: Freitag 31. Dezember 2021, 13:53

Liebes Forum,

ich habe vor Jahren ein (GUI) Programm zum mathemtischen anfitten von (spektroskopischen) Daten in pascal/lazarus geschrieben, um meine Arbeitsabläufe zu erleichtern (und viel Spaß an der Freude). Am Ende hatte das Programm sogar einen eigenen Interpreter mit varianten Variablen und sowas wie einer Shell und war scriptingfähig.
Da ich seit etwa zwei Jahren nun Python, numpy, matplotlib benutze und schätzen gelernt habe, habe ich begonnen dieses Programm in Python und QT neu zu implementieren. Um nicht wieder selbst einen neuen Interpreter zu schreiben, würde ich gerne irgendwie python selbst hierfür benutzen. Die Schwierigkeit besteht darin, dass dieser Interpreter natürlich auf wesentliche Teile des Hauptprogramms drumherum selbst modifizierend zugreifen müsste und ein gewisses Subset an Funktionen ihm bekannt sein müsste. Und wiederum umgekehrt sollten die Objekte des Hauptprogrammes mindestens die Variablen des eingebetteten Interpreters kennen.
Als Beispiel sollten am Ende Dinge in etwa wie folgendes möglich sein:

Code: Alles auswählen

importdata("file1.txt")
a = 3.14
myproject.data[1].fitmodel[2].parameter[3].linkto(2*a*myproject.data[2].dimension)
Vlt kennt ihr ja ein paar gute Stichwörter, Funktionen oder Ansätze mit denen ich da weiter einsteigen oder anfangen könnte? Mein googeln hierzu läuft immer ins Leere, da ich andauernd bei Seiten lande, die die normale Interaktive Python Shell erklären. Macht man hierfür besser eine neue Instanz von Python auf? Oder gibt es einen Weg, wie ich dem Python-Interpreter, der das Hauptprogramm interpretiert diese Befehle "unterjubeln" könnte?

Vielen Dank im Voraus
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Eine eigene Instanz ist nicht sinnvoll. Es gibt mit dem cmd-Modul zb schon Unterstützung für sowas: https://docs.python.org/3/library/cmd.html

Auch der Blick in die IDLE IDE kann hilfreich sein, um zu lernen, wie die das machen.

Und zu guter letzt lohnt sich ggf der Schritt, dein Programm auf eine Reihe vom Bibliotheken einzudampfen, und stattdessen Jupyter als Frontend zu nutzen.
Antworten