__deets__ hat geschrieben: ↑Mittwoch 7. Juli 2021, 17:00
Mit Verlaub, aber du hast eine dermassen krude Vorstellung davon, was du da gerne haettest, und beschreibst es auch noch schlecht, dass man schlicht nicht auf die Idee kommt, was du da vorhast. Aber Danke dann fuer die Unterstellung, man will dir nicht helfen. Immer gerne genommen.
Wenn man alles am laufen hat, wie du es ja behauptest, dann kann man natuerlich auch einfach "sys.version" auswerten lassen, und dann bekommt man zB eine Antwort. Ich hoffe das ist Antwort genug, denn mehr gibt's auch nicht mehr.
Entschuldige bitte, wenn ich Dich gekränkt habe, das war nicht meine Absicht. Aber sys.version war tatsächlich das, was ich gesucht habe, zumindest dem Grunde nach.
Mag sein, dass ich mich missverständlich ausgedrückt habe, auch das war nicht meine Absicht. Ich bin davon ausgegangen, dass Du mich verstanden hast, denn Du hast ja auch keine Rückfragen gestellt.
Ich entwickle seit ca. 10 Jahren keine Software mehr, ich baue nur noch kleine "Tools", die mir und meinen Kollegen die Arbeit erleichtern. Deswegen habe ich zwar manchmal eine Vorstellung der Art "da muss es doch irgendwas geben", aber bisweilen ist es nicht einfach, die entsprechenden Suchbegriffe so zu wählen, dass man etwas passendes herausbekommt.
Ich versuche noch einmal, mein Szenario zu beschreiben, vielleicht gelingt mir das ja jetzt etwas besser. Mit einem Großteil meiner Fragen bin ich ja dank Dir weitergekommen, aber zum Einen will ich Dich nicht im Unklaren lassen, zum Anderen schaut sich vielleicht später jemand diesen Verlauf noch einmal an.
- Ich habe ein paar Module geschrieben, die ganz spezifische Auswertungen in einer komplexen Oracle- Datenbank realisieren. Die Roh- Daten werden mittels SQL beschafft, daraus spezifische Modelle gebaut und parametergesteuert analysiert. Das Ergebnis wird in eine Excel- Tabelle geschrieben. Letztlich wird also eine Funktion aufgerufen in der Form
- Da die eigentlichen Nutzer weder über ausreichende python- Kenntnisse verfügen, noch auf ihren Rechnern explizit python installiert haben müssen, soll es eine "exe" geben, die diesen Aufruf kapselt und gewissermaßen das User- Interface bereitstellt. Die Realisierung erfolgt über Lazarus/TPythonEngine. Diese Komponente ist nicht perfekt, lässt sich aber benutzen.
- Damit das ganze funktioniert, muss ich natürlich zu der eigentlichen Wrapper- Exe auch noch
- eine passende Python3x.dll
- die benutzten standard- und Fremdmodule (sys, re, cx_Oracle ...)
- die eigentlichen Projektmodule
mitliefern.
Es wird explizit die python- DLL geladen (wenn ich mich nicht verprogrammiert habe), die im Programmverzeichnis im Unterordner python von mir hingelegt wurde.
Auf den Rechnern existieren allerdings durchaus verschiedenen Python- Versionen, die idR mit Softwareprodukten mitgeliefert werden, z.B. QGIS, FME etc. Ich muss also davon ausgehen, dass in der Pfad- Variable auf diese Versionen verwiesen worden ist. Da ich mich nicht genau genug auskenne (und auch nicht die Zeit habe, das allzuintensiv auszuprobieren oder ein Quellen- Studium zu betreiben), habe ich also die Befürchtung, dass z.B. von mir unbeabsichtigt ein auf dem Rechner vorhandenes Modul benutzt wird (re, os ..., python*.dll), das mit den von mir erstellten Modulen nicht zusammenarbeitet.
Um also einer endlosen Fehlersuche der Art "Bei mir geht das irgendwie nicht" vorzubeugen, möchte ich also einen Knopf einbauen, der anzeigt, mit welcher DLL, mit welchen Modulen mein Lazarus gerade Informationspingpong spielt.
In diesem Zusammenhang ist es auch interessant, welche der Standard- Module sowieso in meiner DLL vorhanden sind. Idealerweise liefere ich nur die DLL, die Excel- und die Oracle- Anbindung, meine spezifischen Module und alles andere (Standardmodule, wie math, re, sys, path ...) ist schon wie von Geisterhand in der DLL drin. Aber eine solche Quelle habe ich nicht gefunden, daher hier dieser Teil der Frage.
Was mir bislang gelungen ist: Die Exe steht, ich kann sowohl die "mitzuliefernde" dll laden, als auch eine explizit auf meinem System vorhandene. Ich kann meine mitgelieferten Module bekanntmachen und benutzen (auf meinem Rechner). Ich weiß, dass ich nun Energie hineinstecken müsste in Virtuelle Umgebungen, Unit- Tests etc, aber das sprengt den Rahmen - insbesondere, weil ich mich damit auf Python- Ebene auch überhaupt nicht auskenne und leider auch keine Zeit habe, mich reinzuarbeiten.
Der letzte Schritt, denn ich gehen möchte, ist, die Pakete zusammenzustellen, die ich mitliefern muss, das alles in ein Archiv zu stopfen und auszuliefern. Mir ist klar, dass einige der Python- Module letztlich auch nur Wrapper sind. Ohne Oracle- Installation funktioniert auch cx_Oracle nicht, gleiches gilt für Excel. Allerdings ist unternehmensweit sichergestellt, dass Oracle installiert ist. Dummerweise manchmal die 32- bit- Variante, manchmal die 64- bit- Variante, das hängt mit den Anforderungen der eingesetzten Software zusammen. Ich komme also nicht völlig aus diesem Try- Error- Konzept hinaus. Es kann also sein, dass ich "liefere", aber aufgrund der "falschen" Installation meine Implementation daneben greift.
Auf meinem Rechner sind sowohl 32- als auch 64- bit- Versionen sowohl von Oracle, als auch von Lazarus und Python installiert.
Nun ist es zumindest schon einmal lang geworden, hoffentlich aber auch klarer.
Es mag sein, dass es elegantere Ansätze gibt und ich lerne auch gern dazu, aber leider muss eben dieses Lernen nebenbei stattfinden, also neben der eigentlichen Aufgabenerfüllung.
Vielen Dank an Dich, __deets__. Du hast mir sehr wohl geholfen.
Und bitte entschuldige das Missverständnis.