Anwendung außerhalb Pythons

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
Fire
User
Beiträge: 3
Registriert: Sonntag 10. April 2022, 16:30

Hey @all,

ich beschäftige mich jetzt schon eine Weile mit Python und habe mich durch allerlei Dokumentationen und Tutorials gearbeitet und komme ganz gut voran. Ich habe auch schon das ein oder andere Tool für Office geschrieben, stehe nun aber vor dem Problem, das nur ich es nutzen kann.

Dabei habe ich 2 Ideen im Kopf.
1. Das Programm sollte auf verschiedenen Windows Rechnern nutzbar sein.
2. Ich würde gern ein Programm schreiben, dass entweder auf einem (NAS)-Server liegt und da funktioniert oder auf dieselben Datenbanken zugreifen kann und Ändern und somit Live übertragen werden können.

Mein erster Gedanke war natürlich das Ganze in eine .exe umzuwandeln. Bei der Suche danach wurde ich immer auf pyinstall und insbesondere auto-py-to-exe verwiesen. Das habe ich nun einmal ausprobiert. Ich habe einen 45 Zeilen Code geschrieben, der auf eine 5 Zeilen .txt zugreift. In Python funktioniert es sauber. Bei der Umwandlung mit auto-py-to-exe entsteht ein Ordner von 22MB (gegenüber 2 Datei von insgesamt 3 KB). Es sind etliche Datein darin. Ich habe die Exe darin gefunden, aber sie schließt sich nach dem öffnen sofort wieder.
Meine Fragen dazu:

1. Bin ich da überhaupt auf dem richtigen Weg oder sollte man einen anderen Weg finden, es für andere Verfügbar zu machen?
2. Warum ist es so groß? Liegt es daran, dass ich Anaconda auf Interpreter habe und er quasi alle Pakete umwandelt?
Benutzeravatar
sparrow
User
Beiträge: 4245
Registriert: Freitag 17. April 2009, 10:28

1. kann dir niemand beantworten, denn wir kennen deinen konkreten Anwendungsfall und die Umgebung nciht.

2. auto-py-to-exe nimmt dein Programm, alle verwendeten Module und den Interpreter und tut das entweder in ein großes Archiv (onefile) oder packt das in eine Verzeichnisstuktur. All das braucht es, um das Programm auszuführen. Die 2 3KB-Dateien nützen leider nichts ohne einen Interpreter, der entweder installiert oder mitglierfert werden muss.
Benutzeravatar
ThomasL
User
Beiträge: 1368
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Du hast da ein kleines Verständnisproblem.

auto-py-to-exe ist -kein- Compiler, sondern ein Script welches wie von sparrow beschrieben, die .py Dateien und den Python Interpreter in ein Archiv packt und dieses so konfiguriert,
dass es sich automatisch entpackt und der Interpreter mit deinem Code gestartet wird.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
DeaD_EyE
User
Beiträge: 1038
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Fire hat geschrieben: Sonntag 10. April 2022, 17:15 1. Bin ich da überhaupt auf dem richtigen Weg oder sollte man einen anderen Weg finden, es für andere Verfügbar zu machen?
2. Warum ist es so groß? Liegt es daran, dass ich Anaconda auf Interpreter habe und er quasi alle Pakete umwandelt?
  • Falls es eine GUI-Anwendung sein soll, die auf dem Desktop durch einen Anwender gestartet wird, dann bist du mit PyInstaller auf dem richtigen Weg.
  • Groß ist es deswegen, da die gesamte Laufzeitumgebung verpackt in der exe mitgeliefert wird. Unter anderem befinden sich dort auch Bibliotheken.
Anaconda ist soweit ich weiß eine Python-Distribution.
Wer sich über die Größe beschwert, sollte im Hinterkopf behalten, dass .NET auch jedes Mal versucht wird zu installieren, wenn man eine .NET Anwendung unter Windows installiert. In den meisten Fällen ist die Laufzeitumgebung für .NET aber vorhanden. Bei Python ist das eher die Seltenheit, dass jemand den passenden Interpreter auf seinem PC installiert hat.

Wenn du dein Programm mit PyInstaller in eine exe umwandelst, wird der Interpreter zusammen mit den Bibliotheken und den Python-Modulen und Module von Drittanbietern verpackt. Manchmal muss man diese Module mit angeben, da es "hidden imports" sind.

Hier ist z.B. eine Anleitung für PyInstaller + PySide6 (Qt6 für Python): https://www.pythonguis.com/tutorials/pa ... tallforge/
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

Fire hat geschrieben: Sonntag 10. April 2022, 17:15
2. Ich würde gern ein Programm schreiben, dass entweder auf einem (NAS)-Server liegt und da funktioniert oder auf dieselben Datenbanken zugreifen kann [...]

Klingt für mich nach einem klassischen Webservice.

Dein Programm (Python) läuft auf der NAS und die Benutzer können es mit Ihrem Browser offen. Die Frameworks Flask und Django sind da in der Python Welt sehr verbreitet. Der Vorteil auf den „Clients“ reicht ein handelsüblicher Browser.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und noch ein Wort der Warnung hinterher: wenn mit Datenbank sowas wie SQLite gemeint ist, das auf der NAS liegen soll - das geht spektakulär in die Hose. File shares sind ungeeignet solche Datenbanken zu nutzen, das muss dann schon ein richtiger RDBMS Service ala Postgres sein.
Fire
User
Beiträge: 3
Registriert: Sonntag 10. April 2022, 16:30

Erstmal vielen Dank an alle für den Input. Jetzt nehme ich mir erstmal die Zeit mich in einiges erstmal einzulesen.
Wer sich über die Größe beschwert, sollte im Hinterkopf behalten, dass .NET auch jedes Mal versucht wird zu installieren, wenn man eine .NET Anwendung unter Windows installiert. In den meisten Fällen ist die Laufzeitumgebung für .NET aber vorhanden. Bei Python ist das eher die Seltenheit, dass jemand den passenden Interpreter auf seinem PC installiert hat.
Ich versuche im Moment vorallem zu verstehen. Ich habe zwar schon ein wenig, auch mit anderen Sprachen experimentiert und mit Javascript ein funktionierendes Programm geschrieben, was über den Browser, zumindest für mich, funktioniert hat. Aber ich bin das erste Mal soweit ein richtiges Anwendungsprogramm schreiben zu können und stehe jetzt vor dem Problem der Nutzbarkeit. Da kommen, wie bei jedem lernen einer neuen Sprache Diese "Warum ist das so"-Fragen auf. Ich sehe einfach das es viele Programme gibt, die viel kleiner sind. Ich habe ganze Spiele von Disketten geladen, wie kann es dann sein, dass ich jetzt diesen Speicher brauche, da ist was verkehrt. Die Erläuterungen machen es mir nun etwas klarer.
Falls es eine GUI-Anwendung sein soll, die auf dem Desktop durch einen Anwender gestartet wird, dann bist du mit PyInstaller auf dem richtigen Weg.
Dein Programm (Python) läuft auf der NAS und die Benutzer können es mit Ihrem Browser offen. Die Frameworks Flask und Django sind da in der Python Welt sehr verbreitet. Der Vorteil auf den „Clients“ reicht ein handelsüblicher Browser.
Ich versuche gerade für mich heraus zufinden, was die Beste Lösung ist und mich dann daran zu machen. Es ist mir im Grunde egal, ob es über einen Brower läuft, oder ob ich die GUI vom Desktop aus starte. Die Datenbank dafür müsste ja trotzdem auf dem NAS Server liegen. Dann stellt sich für mich die Frage, wie ich das dann verknüpfe. Ich werde mir Flask und Django einmal genauer ansehen und dann wahrscheinlich noch mal mit der Frage kommen, wie das Programm auf der NAS laufen kann. ;)
Und noch ein Wort der Warnung hinterher: wenn mit Datenbank sowas wie SQLite gemeint ist, das auf der NAS liegen soll - das geht spektakulär in die Hose. File shares sind ungeeignet solche Datenbanken zu nutzen, das muss dann schon ein richtiger RDBMS Service ala Postgres sein.
Danke für den Hinweis. Ich hatte mir noch keine spezielle Datenbank ausgeguckt. Ich wollte erstmal testen, wie ich das Programm über mehrere Rechner verknüpfen kann. RDBMS und Postgres werde ich mir jetzt mal näher ansehen.

Danke für eure Hilfe und einen schönen Tag.
Antworten