Python Kompilieren python ?

TimMüller

Cadet 1st Year
Registriert
Apr. 2022
Beiträge
10
Hi,

ich habe ein Programm erstellt, was eine bestimmte Aufgabe lösen soll. Ein Teil der Aufgabe ist es, zu schauen, ob es einen bestimmten Ordner im Überverzeichnis schon gibt. Wenn dieser Ordner noch nicht existiert, dann wird ein neuer erstellt.

Das Programm funktioniert super, wenn ich nur die .py Datei ausführe, es erkennt ob der Ordner existiert oder nicht und erstellt wenn nötig einen neuen Ordner.
Nachdem ich diese .py Datei in eine Exe umgewandelt habe, funktioniert das mit dem Ordner erstellen nicht mehr. Sonst funktioniert aber die gesamte Gui Anwendung wie bei der .py Datei.

Hier ist der zugeörige Code, der den ordner erstellt:

# ---- ordner checken ----
path = Path(file).parent.absolute()
path1 = Path(path).parent.absolute()
vpath = path1.joinpath("Downloaded Videos")
if os.path.exists(vpath):
# ordner erstellen
os.makedirs(vpath)

So habe ich diese datei kompeliert: "pyinstaller --onefile --windowed --icon=logo.ico testprogram.py"

Danke schonmal für eure Hilfe!
 
Du kannst den Code auch in [CODE=python][/CODE] Codeklammern packen. Dann gibt es Zeilennummern und Syntax highlighting
 
  • Gefällt mir
Reaktionen: madmax2010 und kamanu
Fetzige Idee: Printe die Pfade doch mal und führe deine Exe aus einem CMD Fenster heraus aus, dann solltest du die Ausgaben sehen und feststellen können wo es klemmt.
 
DaysShadow schrieb:
Fetzige Idee: Printe die Pfade doch mal und führe deine Exe aus einem CMD Fenster heraus aus, dann solltest du die Ausgaben sehen und feststellen können wo es klemmt.
Danke für deinen Tipp, die Exe funktioniert anscheinend doch. Jedoch verändert sich der speicherpfad. Anstatt des Pfades, wo sich die Exe befindet, wird der Pfad zum Temp ordner verändert. Dort ist übrigends auch der Ordner, der erstellt wurde.

Tipps, wie ich den Path der exe auslese?
 
Wenn der Compiler
Python:
__file__
auswertet bzw. übersetzt, ist das halt der Ort an dem das passiert. Deswegen mal so wie oben gezeigt probieren.
Ergänzung ()

TimMüller schrieb:
Anstatt des Pfades, wo sich die Exe befindet, wird der Pfad zum Temp ordner
Also der Temp Ordner. Legt PyInstaller nicht einen an (rhetorische Frage 😉)?
 
Zuletzt bearbeitet:
Und ganz wichtig: Loes dich von diesem .exe denken - Dateiendungen sind schall und rauch. Ich checke nicht, warum windows da bis heute drauf schaut. Der inhalt einer Datei ist viel relevanter und es gibt sooo viele verschiedene formate, die ohne die Endung exe ausfuerbar sind. Was eine Datei tut und wie sie sich benimmt, leutet sich vor allem aus ihrem inhalt ab (Innere Werte und so :P )
 
  • Gefällt mir
Reaktionen: Evolutio und dafReak
playerthreeone schrieb:
Warum überhaupt?
Gib mal eine ausführbare Python Datei an einen 0815 User weiter. Funktioniert nicht ;) und auch für alle anderen die es nur ausführen wollen unnötig unkompliziert.
 
  • Gefällt mir
Reaktionen: KitKat::new() und madmax2010
Hier, schau mal ab dem Timestamp, oder den ganzen Talk. Sehr gut was so Dateiformate angeht :)
 
  • Gefällt mir
Reaktionen: DaysShadow
@madmax2010 Die ersten 2 Minuten ab dem Timestamp sind schon mal sehr gut, aus Neugierde werde ich es noch weiter schauen, aber worum es mir hier ging ist einfach die Sache, dass der Nutzer ohne solche Verpacker ein Python Environment mit allen nötigen Packages benötigt und das in aller Regel eine zu große Hürde ist. Die Verpacker hauen das ja alles in die ausführbare EXE so herein, dass alles da und erreichbar ist was benötigt wird. Mittlerweile vielleicht auch anders, ist ein paar Jahre her bei mir, dass ich das versucht habe.
 
  • Gefällt mir
Reaktionen: KitKat::new() und madmax2010
playerthreeone schrieb:
Bei so einem 0815 Script geht es doch nicht um "Weitergabe". Hoffentlich.
Ersteinmal sorry, falls ich Dir zu nahe treten sollte... Ich entschuldige mich auch schonmal, falls ich Deine Kommentare falsch aufgefasst haben sollte...

Bislang hast Du aber, zumindest in diesem Beitrag, keine sinnvollen Ideen/Argumente eingebracht. Weiter oben schreibst Du "Warum überhaupt?", anstatt konstruktiv zu helfen.

Und jetzt nochmal zu Deinem Kommentar "Bei so einem 0815 Script geht es doch nicht um "Weitergabe". Hoffentlich.":

Wie oben beschrieben, ist das nur ein Teilausschnitt. Vielleicht verständlich, da ansonsten unnütze Seiten an Quellcode gepostet werden müssten. Du weißt nicht was das Programm macht und kennst den vollständigen Quellcode nicht. Wie willst Du dann bitte beurteilen, wie komplex das Programm ist?

Und ja, es dient sogar zur Weitergabe. Und ja, es ist kein allzugroßes Programm(es hat ca. 300 Zeilen). Solche Programme dienen der Automatisierung und Vereinfachung. Es hilft anderen Menschen in meinem Umfeld Dinge aus dem Internet leichter herunterzuladen. Diese Menschen können eben gerade nur Windows benutzen und sind nicht in der Lage erstmal Python zu installieren.

Ich wollte eigentlich garnicht auf deine Kommentare reagieren bzw. mich sogar rechtfertigen. Aber vielleicht hilft es dir dabei, dich selber mal zu reflektieren.

Ich wünsche dir noch einen schönen Tag..
 
Zurück
Oben