Python und Lazarus

Rund um die LCL und andere Komponenten
Antworten
maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Python und Lazarus

Beitrag von maurog »

Hallo, ich habe mit Python wirklich keine Erfahrung.

Ich habe durch Python4Delphi Komponenten, Python Schnittstelle zu meinem Free Pascal Programm hinzugefügt.
Ich kann aus meinem Programm heraus ganz normal Python Skripte ausführen. Funktioniert tadellos.

Nun Folgende Code startet thonny aber es wird eine neue Instanz von meinem Programm auch gestartet.
Danach hängt sich das Ganze auf.

Code: Alles auswählen

from thonny import launch
launch()
Irgend welche Ideen?
Danke.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Python und Lazarus

Beitrag von af0815 »

Es geht hier um das Ausführen von Scipten, und Thonny selbst ist mehr als ein Scipt, es ist eine ganze IDE. Und ruft seinerseits wieder einen Phyton interpreter auf. Daher dürfte auch der neuerliche Aufruf deines Programmes kommen.

Warum startest du thonny über den Pythoninterpreter und nicht direkt ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Python und Lazarus

Beitrag von theo »

af0815 hat recht.
Was ist denn dein Ziel?
"Thonny" starten würde ich eher so: https://wiki.freepascal.org/Executing_External_Programs

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus

Beitrag von maurog »

Danke für eure Antworten.

Es geht um eine CAD-Anwendung. Ich habe bis jetzt mit Delphi und TMS-Scripter gearbeitet.
Mit einem Runtime-Scripter, kann ich auf meine Zeichnung zugreifen(einzelne Elemente (Linien, bögen etc..) iterieren, modifizieren etc..)
Was ich erreichen will, sieht man am besten wenn man sich die vorhandenes Projekt anschaut.
Hier ist ein Link https://youtu.be/BnRZbmbFYj4. (ich hoffe, es ist nicht gegen Forum-Regeln, wenn ja, bitte einfach löschen)

Was ich schon mit Delphi und TMS-Scripter implementiert habe, würde ich gerne auf Lazarus/FPC und Python umstellen.
Einige hinweise noch:
--PyScripter ist auch ein Python-IDE(in Delphi geschrieben). Aus PyScripter, kann ich problemlos, thonny starten.
--Integrierte Interpreter von tonny kann man durch thonny-Konfiguration umgehen.---
Warum startest du thonny über den Pythoninterpreter und nicht direkt ?
-- Es wird dann schwieriger auf meine Zeichnung zuzugreifen (wenn überhaupt möglich)

Danke für eure Mühe.
LG. Mauro.

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus

Beitrag von maurog »

Also, villeicht wird es verständlicher:
Ich will Thonny in meiner Anwendung als Debugger integrieren.
Ich verwende Python4Delphi Komponenten.
LG. Mauro.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Python und Lazarus

Beitrag von af0815 »

P4D ist eine "realtiv" einfache Umsetzung. Daher erwarte keine allzugroßen Dinge davon. Es wird auch nicht so aktiv verwendet, weil die Community nicht wirklich riesig ist.
TMS- bietet aber auch für Lazarus an. Ausserdem sind die meisten hier auf Lazarus spezialisiert, nicht auch kryptische Scriptsprachen :-) SCNR
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus

Beitrag von maurog »

So kryptisch schaut Python auch nicht ... :D
Aber Danke für die Info.
LG.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Python und Lazarus

Beitrag von af0815 »

Generell kann man sagen,, bei Lazarus liegt alles im Quellcode vor und lässt sich debuggen. Auch Lazarus selbst kann mit Lazarus debugged werden.

Dein Hauptproblem ist das nachstarten von Thonny und das sich das ganze aufhängt.

Die ersten Fragen:
* ) Wir wissen nichts von deinem Betriebssystem,
* ) Lazarus und den
* ) verwendete Komponenten für dieses Projekt.

Weil P4D gibt es in verschiedenen Varianten ( https://github.com/Alexey-T/Python-for-Lazarus , https://github.com/pyscripter/python4delphi ), wobei Varianten nicht immer der beste Begriff sind - sagen Bugfixstufen.
Nun Folgende Code startet thonny aber es wird eine neue Instanz von meinem Programm auch gestartet.
Danach hängt sich das Ganze auf.
Soweit ich verstanden habe, normale Phyton Scripte laufen. Nur thonny macht mit deinem Programm Probleme. Die Frage ist, startet thonny alleine als IDE ? Lässt sich das ganze mit einem Phytoninterpreter alleine auch so starten oder startet der auch wieder dein Programm nach und hängt.
So kompliziert ist P4D nicht, nur etwas verwirrend am Anfang, wie die Welten hier verbunden werden. Und dort gibt es auch die Probleme wenn man sich die Beschreibung durchliest https://github.com/pyscripter/python4de ... dPlatforms
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus

Beitrag von maurog »

Hallo,

Danke für die ausführliche Antwort.

Betriebssystem: Win 11 Home.
Lazarus Version: 2.2.6
FPC Version: 3.2.2
P4D habe ich über Lazarus Online-Packagemanager installiert.

Ich weiss jetzt wieso das Programm sich merkwürdig verhält.
--Als erstes starte ich das Hauptprogram (startet ganz normal ohne Probleme)
--Danach mit einem Button-Klick führe ich folgende Code aus:

Code: Alles auswählen

PythonEngine1.ExecStrings( SynEdit1.Lines);
SynEdit.Lines enthält folgende Code:

Code: Alles auswählen

from thonny import launch
launch()
--Thonny startet ganz normal aber gleichzeitig startet thonny eine neue Instanz von Hauptprogramm
--bis jetzt hat sich noch nichts aufgehängt.
--Nun schaue ich thonny einstellungen->Python Interpreter.
-- Hier anstelle Python-Path steht volle Path zur Hauptprogram,
daher startet thonny eine neue Instanz von Hauptprogramm. (Thonny glaubt Hauptprogram wäre Python Interpreter).
Und wenn ich ab Hier etwas ändere oder arbeite (zb. Python-Path in Thonny-Einstellungen korrugieren)
hängt sich das Ganze auf.
Ich weiss nicht von wo thonny das Parameter(Python-Path) nimmt.
Danke noch einmal.
Mauro.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Python und Lazarus

Beitrag von PascalDragon »

af0815 hat geschrieben:
So 26. Mär 2023, 21:35
P4D ist eine "realtiv" einfache Umsetzung. Daher erwarte keine allzugroßen Dinge davon.
„relativ einfach”?! :shock: Dann hast du es wohl noch nie ausführlich genutzt. Deren Custom Variant Implementierung zum Zugriff auf Python Variablen und Funktionen ist ein ziemlich krasser Stresstest für FPC's Variant Implementierung.
FPC Compiler Entwickler

hum4n0id3
Beiträge: 301
Registriert: So 5. Mai 2019, 15:23

Re: Python und Lazarus

Beitrag von hum4n0id3 »

maurog hat geschrieben:
Sa 1. Apr 2023, 10:57

Ich weiss nicht von wo thonny das Parameter(Python-Path) nimmt.
Vielleicht hilft dir dieses kurze Python-Skript:

Code: Alles auswählen

import sys

locate_python = sys.exec_prefix

print(locate_python)
Ich hatte auch mal ein seltsames Verhalten. Ich hatte zwar Python 3.11 installiert gehabt, aber es wurde immer Python3.10 verwendet. In der Apps von Windows geschaut, kein Python 3.10, Python immer wieder installiert und deinstalliert. Immer Python 3.10. Dann habe ich mit diesem Skript einfach in Python geschaut, wo es sich den befindet und siehe da, ein Python3.10 Interpreter hat sich in Inkscape befunden und darauf hat sich Windows eingeschossen. Also deinstallierte ich Inkscape und installierte wieder Python3.11 und siehe da, alles danach war korrekt.

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus

Beitrag von maurog »

Danke. Ich werde es versuchen.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Python und Lazarus

Beitrag von af0815 »

PascalDragon hat geschrieben:
Sa 1. Apr 2023, 16:28
Dann hast du es wohl noch nie ausführlich genutzt. Deren Custom Variant Implementierung zum Zugriff auf Python Variablen und Funktionen ist ein ziemlich krasser Stresstest für FPC's Variant Implementierung.
Das sind Implementierungsdetails, für Dev's bestimmend aber nicht für Benutzer. Auch nicht wie kompatibel das ganze mit Delphi ist (oder nicht ist)

Aktuell bei meinem letzten Versuchen mit P4D bin ich auf einige Probleme gestoßen, die in der Delphi Version funktionieren sollen. Dazu im Thema "Supported Platforms" unter fpc mehr und wenn man dort Workaround braucht, so sage ich dazu mal "relativ einfache Umsetzung", da es nicht den vollen Umfang und Stabilität der Delphi Version zu haben scheint. Allerdings sind meine Versuche auch schon mehr als ein Jahr her.

maurog sucht einen Fehler, ist der jetzt bedingt durch die Umsetzung, das man für manche Sachen 'Workarounds gebraucht werden ? Nicht das man einen Fehler sucht, der ganz einfach von den aktuellen Unterschieden Delphi zu FPC ausgelöst ist und somit schwer lösbar. Und das Unterschiede da sind ist im Phyton4Delphi Projekt ja dokumentiert.

Sorry das sich da PascalDragon an meinem "Wording" gestoßen hat, ich wusste aber auch nicht, das ich da einen scheinbar wunden Punkt getroffen habe. Ich hoffe es ist jetzt klarer was ich gemeint habe.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus

Beitrag von maurog »

Hallo,

mit Object-Pascal habe ich seit Turbo-Pascal 7 zu tun.
Mit Python und Thonny nul erfahrung.

Wenn ich Thonny aus PyScripter aufrufe (2 Zeilen Code), funktioniert problemlos.
Wenn ich Thonny über P4D-Komponente PythonEngine aufrufe, Thonny startet aber es wird eine neue Instanz von Hauptprogramm auch gestartet.
Bevor das Ganze sich aufhängt, kann ich noch Thonny-Enstellungen anschauen.
Enstellungen->Python-Interpreter = Hauptprogramm (nicht Python-Interpreter).
Wenn ich die Einstellung ändere, hängt sich das Ganze auf. (Egal was ich mache, hängt sich das Ganze auf.).
Wenn ich nachher, Thonny-Logfiles anschaue, Sys.Executable = Haupprogramm (nicht Python-Interpreter).
Wenn ich Thonny-Konfigurationsfile anschaue, Sys.Executable = Python-Interpreter (also richtig).
Der Eintrag in Thonny-Konfigurationsfile wird dynamisch überschrieben (denke ich...).

Ich bin mir sicher, das Problem liegt an meine mangelnde Python/Thonny (System, Umgebung, Arbeitsweise etc.. Erfahrung fehlt einfach) liegt.
P4D-Komponente PythonEngine hat mehrere Python-Einstellungen (Flags etc...), bei denen ich mir nicht ganz sicher bin, was sie bedeuten.

Ich werde am Wochenende meinen alten Rechner sauber aufsetzen. Nur OS, FPC, Lazarus, Python und Thonny.
Und werde ich das Ganze mit einer neue leere Anwendung (ein Lazarus-Projekt mit nur Hauptformular) testen. Die CAD-Anwendung ist doch umfangreicher. Daher Fehlersuche wird mühsamer.

Danke für eure Beiträge und Unterstützung.
Mauro.

maurog
Beiträge: 8
Registriert: So 26. Mär 2023, 14:01

Re: Python und Lazarus (erledigt)

Beitrag von maurog »

Hallo,
Thonny einzubetten hat nicht funktioniert. Dafür fehlen mir Pythonkenntnisse.
Nun wirklich Python lernen will ich auch nicht. Ich werde nur Python Bibliotheken in Pascal nutzen.
Ich habe eine einfachere und bessere Lösung implementiert.
Mit dieser Lösung (IPC) kann ich jede IDE/Debugger verwenden.

Die Lösung habe in Python Forum gepostet.
https://www.python-forum.de/viewtopic.p ... 19#p426119

und Hier ist die Ergebnis
http://www.hackcad.com/maindownloads/python.mp4

Ich freue mich auf eure Kommentare.
Danke,
Maurog.

Antworten