Hallo!
Ich habe mir vor kurzem ein Quiz programmiert, in dem einige Bilder als Texturen und Sounds als Hintergrundgeräusche benötigt werden. Nun wollte ich dieses jedoch auch meinen Freunden zugänglich machen, die leider kein Python inklusive der etwa fünf benötigten Module besitzen, also habe ich PyInstaller zum "kompilieren" oder "freezen" verwendet, was eigentlich auch gut funktioniert hat. Doch nun zu meinen Fragen:
1) Wie kann ich die Sound- und Bild-Dateien mit in die Exe packen, sodass das Programm letztendlich nur noch aus einer Exe besteht?
makespec.py -F -w -K --icon=icon.ico quiz.pyw
build.py quiz.spec
Mit -F bekomme ich das ganze zwar in eine Datei, allerdings sollen dorthin ja noch die Bilder usw.
Mit einem Filejoiner will ichs nicht machen, da dies nur zu unnötigen Problemen mit Antivirenprogrammen führt.
2) Ist es nötig, dass ich mit -K Tk/Tcl mit einbinde? Ich weiß nicht, ob es daran liegt, doch zuvor hatte ich einmal das Problem, dass andere Leute die Programme nicht ausführen konnten, ich jedoch schon. Bei ihnen ist stets sofort das Fenster verschwunden bzw. nicht erschienen.
PS: Ich verwende PyInstaller nicht, um den Quellcode zu verdecken, sondern nur, um den Leuten fünf Installationen zu ersparen.
Danke schonmal für eure Aufmerksamkeit,
Pythonierer.
Multimedia-Dateien in Exe (vlt. mit PyInstaller) einbinden
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das geht nicht so einfach. Denn wie willst du dann auf eine Datei zugreifen, die in der EXE-Datei gespeichert ist? Unter C benutzt man dafür Ressources, die zur Laufzeit aus der EXE ausgelesen werden, aber so einfach ist das gar nicht. Was du machen kannst ist die ganzen Sachen zu einer EXE-Datei packen, die automatisch in einen temporären Ordner entpackt wird und von dort gestartet wird. Mit den entsprechenden Performance-Senkungen.Pythonierer hat geschrieben:1) Wie kann ich die Sound- und Bild-Dateien mit in die Exe packen, sodass das Programm letztendlich nur noch aus einer Exe besteht?
makespec.py -F -w -K --icon=icon.ico quiz.pyw
build.py quiz.spec
Mit -F bekomme ich das ganze zwar in eine Datei, allerdings sollen dorthin ja noch die Bilder usw.
Mit einem Filejoiner will ichs nicht machen, da dies nur zu unnötigen Problemen mit Antivirenprogrammen führt.
Wenn sie nicht sagen was in dem Fenster stand, dann kann man da raten. Wenn du Tkinter verwendest, musst du das natürlich einbinden.Pythonierer hat geschrieben:2) Ist es nötig, dass ich mit -K Tk/Tcl mit einbinde? Ich weiß nicht, ob es daran liegt, doch zuvor hatte ich einmal das Problem, dass andere Leute die Programme nicht ausführen konnten, ich jedoch schon. Bei ihnen ist stets sofort das Fenster verschwunden bzw. nicht erschienen.
Also effektiv eine. Die von Python, denn das bringt Tkinter mit. Was wären denn die anderen Sachen, die du installieren müsstest?Pythonierer hat geschrieben:PS: Ich verwende PyInstaller nicht, um den Quellcode zu verdecken, sondern nur, um den Leuten fünf Installationen zu ersparen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Du musst alle Sachen die nicht automatisch vom PyInstaller aufgelöst werden können in deinem PyInstaller Skript festlegen. Eine detailierte Beschreibung über alles was du wissen musst findest du in der Doku.
Hier ist zum Beispiel beschrieben wie du alles in ein Self-Extractable Exe packst. Du musst natürlich auch deine eigentliche Applikation so konzipieren das sie nicht mit festen(absoluten) Pfaden auf die externen Komponenten zugreift usw.
http://pyinstaller.hpcf.upr.edu/docs/Ma ... xecutables
Hier ist zum Beispiel beschrieben wie du alles in ein Self-Extractable Exe packst. Du musst natürlich auch deine eigentliche Applikation so konzipieren das sie nicht mit festen(absoluten) Pfaden auf die externen Komponenten zugreift usw.
http://pyinstaller.hpcf.upr.edu/docs/Ma ... xecutables
-
- User
- Beiträge: 41
- Registriert: Samstag 13. Januar 2007, 15:26
Erstmal ein herzliches Dankeschön für die beiden schnellen antworten, mit welchen ich vor morgen eigentlich nicht gerechnet hätte.
Leider habe ich vergessen zu schreiben, dass ich Tkinter als GUI verwende, doch nun weiß ich ja, dass ich Tk/Tcl mit einbinden muss.
Wie dem auch sei, die anderen "fünf Bibliotheken" waren etwas übertrieben, da ich ausversehen Image, ImageTk usw. getrennt gezählt habe, aber Python, PyMedia und PIL sind immerhin schon ein paar Installationen.
Ich werd mich jedenfalls gleich mal an eure Tipps machen und bedanke mich nochmals für eure Hilfe,
Pythonierer.
Leider habe ich vergessen zu schreiben, dass ich Tkinter als GUI verwende, doch nun weiß ich ja, dass ich Tk/Tcl mit einbinden muss.
Wie dem auch sei, die anderen "fünf Bibliotheken" waren etwas übertrieben, da ich ausversehen Image, ImageTk usw. getrennt gezählt habe, aber Python, PyMedia und PIL sind immerhin schon ein paar Installationen.
Ich werd mich jedenfalls gleich mal an eure Tipps machen und bedanke mich nochmals für eure Hilfe,
Pythonierer.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du kannst dir auch deine eigene Python-Distribution bauen, so wie ActiveStates ActivePython oder Pylite und dann dort das einpacken was du willst.Pythonierer hat geschrieben:Wie dem auch sei, die anderen "fünf Bibliotheken" waren etwas übertrieben, da ich ausversehen Image, ImageTk usw. getrennt gezählt habe, aber Python, PyMedia und PIL sind immerhin schon ein paar Installationen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Afaik könntest du die an deine .exe einfach heran hängen. Ob das schlau ist ist eine andere frage. Ich würde einfach für Windows einen Installer schreiben. Und für Linux eine setup.py. Wenn du es besonders toll machen willst kannst du ja noch rpm sowie deb Pakete bauen.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann