Anklickbare Anwendung erstellen

Probleme bei der Installation?
Antworten
Benutzeravatar
Goswin
User
Beiträge: 366
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Ich habe eine Anwendung gebaut, bestehend aus mehreren Modulen, die ich in Linux von einem Terminal aus aufrufe und die mittels mainloop die Kontrolle an an ein tkinter-Fenster übergibt. Diese Anwendung läuft auch auf Windows, kann aber auch dort nur von der Konsole aus aufgerufen werden, und benötigt dazu lächerlicherweise auch noch Idle. Dazu gleich drei Fragen, die aber deutlich zusammenhängen:

(1)
Wieso läuft meine Anwendung nicht mehr, wenn ich den Quellcode meiner importierten Module entferne, wo doch das Aufrufemodul nur den Bytecode dieser Module (welcher immer noch vorhanden ist) verwenden sollte?

(2)
Wie kann ich in Linux eine einzelne Datei erstellen, welche irgendwo hinverschoben werden kann und dort durch bloßes Anklicken die Anwendung zum Laufen bringt? Sozusagen "all included" und "foolproof".

(3)
Wie kann ich eine exe-Datei für Windows erstellen, die durch bloßes Anklicken die Anwendung zum Laufen bringt? Kann ich so eine von meinem Linuxrechner aus erstellen (natürlich nicht testen), oder brauche ich dazu selber ein Windows-Betriebssystem?

Vielen Dank für jegliche Hinweise!
BlackJack

Das Deine Anwendung unter Windows IDLE benötigt kann ich mir nicht vorstellen wenn Du das nicht irgendwo explizit benutzt. Und *dann* würde die Anwendung nicht nur unter Windows IDLE benötigen sondern natürlich auch unter jedem anderen System.

(1) Die Bytecodedateien müssen zum Interpreter passen. Ansonsten spricht da nichts gegen. Man sollte dann aber sicherheitshalber den Interpreter selbst mitliefern, eben weil man nicht sicher sein kann, dass auf dem Zielrechner ein zu diesen Dateien passender Interpreter installiert ist.

(2) Gar nicht. Was passiert wenn man auf ”die Datei anklickt” bestimmt das Programm welches man zum grafischen betrachten und anklicken der Datei verwendet. Es gibt Standardisierungsbestrebungen, so dass man das zum Beispiel für KDE und Gnome auf die gleiche Weise lösen kann, aber wirklich allgemein und ”foolproof” gibt's nichts. Bezüglich der Standardisierung schau Dir mal ``*.desktop``-Dateien nach dem Freedesktop-Standard an.

(3) Diese Frage ist eine FAQ die schon zig mal gestellt und beantwortet wurde. Wobei das vom Linuxrechner erstellen mit Wine gehen könnte, ich das aber nicht für empfehlenswert halte. Eine Windows-VM mit einer günstig erworbenen OEM-Windows-Lizenz, wäre da sicherer.
Benutzeravatar
Goswin
User
Beiträge: 366
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

BlackJack hat geschrieben: (1) Die Bytecodedateien müssen zum Interpreter passen. Ansonsten spricht da nichts gegen. Man sollte dann aber sicherheitshalber den Interpreter selbst mitliefern, eben weil man nicht sicher sein kann, dass auf dem Zielrechner ein zu diesen Dateien passender Interpreter installiert ist.
Problem gelöst. Aus irgendeinem Grund nennt mein Interpreter den Bytecode einer Datei xxx.py nicht wie erwartet xxx.pyc sondern xxx.cpython-32.pyc. Ein einfaches Umbenennen der Dateien macht sie auffindbar.

BlackJack hat geschrieben: (3) Wobei [exe-Dateien] vom Linuxrechner erstellen mit Wine gehen könnte, ich das aber nicht für empfehlenswert halte. Eine Windows-VM mit einer günstig erworbenen OEM-Windows-Lizenz, wäre da sicherer.
'cx_Freeze’s documentation' hat geschrieben: cx_Freeze is a set of scripts and modules for freezing Python scripts into executables in much the same way that py2exe and py2app do. Unlike these two tools, cx_Freeze is cross platform and should work on any platform that Python itself works on. It requires Python 2.4 or higher and does work with Python 3.
Aber was bedeutet "cross-plattform" bloß im obigen Zusammenhang?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dass du auf jeder Plattform ein eigenes Executable erstellen musst, es aber auch auf jeder Plattform geht. Das sagt sogar die Dokumentation: http://cx-freeze.readthedocs.org/en/lat ... -platforms
Antworten