2008-09-30 5 views
11

Ich muss eine kleine bis mittelgroße Desktop-GUI-Anwendung, vorzugsweise mit Python als eine Sprache der Wahl aus Zeitgründen zu entwickeln.Python-GUI-Anwendung Umverteilung

Welche GUI Bibliothekswahlen habe ich, die mir erlauben, meine Anwendung eigenständig zu verteilen, vorausgesetzt, dass die Benutzer keine funktionierende Python-Installation haben und natürlich nicht die GUI-Bibliotheken, die ich benutze?

Auch, wie würde ich alles über Binärdateien von sinnvolle Größe für jedes Ziel OS gehen? (Meine Hauptziele sind Windows und Mac OS X)

Zusatz: Ich habe bei WxPython suchen, aber ich habe viele Horrorgeschichten von Verpackungen mit cx_freeze und bekommen 30mb + Binärdateien gefunden, und keine wirkliche Ratschläge, wie zu eigentlich die Verpackung tun und wie vertrauenswürdig es ist.

Antwort

0

ich py2exe mich benutzt habe - es (zumindest für kleine Anwendungen) wirklich einfach ist.

1

http://Gajim.org für Windows verwendet Python und PyGtk. Sie können überprüfen, wie sie es gemacht haben. Außerdem gibt es PyQt für GUI (und wxpython bereits erwähnt).

2

Python hat ein eingebettetes GUI-Toolkit namens TKinter, das auf Tk-Bibliothek von TCL-Programmiersprache basiert. Es ist sehr einfach und hat nicht alle Funktionen, die Sie beispielsweise in Windows Forms oder GTK erwarten, aber wenn Sie ein plattformunabhängiges Toolkit haben müssen, sehe ich keine andere Wahl, wenn Sie auch nicht so sehr die Binärdatei entwickeln wollen.

Tkinter ist nicht schwer zu verwenden, da es nicht über Millionen Widgets/Steuerelemente und Optionen verfügt und das Standard-Toolkit in den meisten Python-Distributionen ist, zumindest unter Windows, OSX und Linux.

GTK und QT sind schöner und mächtiger, aber sie haben einen einen großen Nachteil für Sie: Sie sind schwer und deppend auf dritte Bibliotheken, vor allem GTK, die eine Menge von Abhängigkeiten hat, dass es ein wenig schwer zu verteilen ist es eingebettet in Ihre Software.

Wie bei der Binär-Erstellung weiß ich, dass es py2exe gibt, das Python-Code in ausführbaren Win32-Code (.exe) konvertiert, aber ich bin nicht sicher, ob es etwas Ähnliches für OSX gibt. Machst du dir Sorgen, weil die Leute den Quellcode sehen können oder nur so, dass du alles in einem Paket bündeln kannst? Wenn Sie einfach alles bündeln wollen Sie nicht brauchen eine eigenständige ausführbare Datei zu erstellen, könnte man leicht einen Installer zu erstellen:

Creating distributable in python

Das ist eine Anleitung, wie Sie Ihre Software zu verteilen, wenn es fertig ist.

0

Kombination, die ich kenne: wxPython, py2exe, upx

Der Schlüssel Ihre letzte Sorge um die Größe der Verteilung zur Lösung verwendet upx die DLLs zu komprimieren. Es sieht so aus, als ob sie ausführbare MacOS-Dateien unterstützen. Sie zahlen eine erste Dekompressionsstrafe, wenn die DLLs zum ersten Mal geladen werden.

1

Ich habe keine Erfahrung beim Erstellen von eigenständigen Anwendungen für jede Plattform außer Windows.

Das heißt:

Tkinter: mit py2exe gut funktioniert. Python Megawidgets (eine "Erweiterungsbibliothek" für Tkinter) funktioniert auch gut, aber es macht funky Dinge mit dynamischen Importen, also musst du alle Komponenten in eine große Datei "pmw.py" kombinieren und sie zu deinem Projekt hinzufügen (naja, Sie haben auch pmwblt.py und pmwcolor.py). Es gibt Anweisungen, wie Sie dies irgendwo tun können (entweder im py2exe-Wiki oder in den PMW-Dokumenten). Tix (eine Erweiterung von Tk, die du mit Tkinter verwenden kannst) funktioniert nicht mit py2exe, oder zumindest war das meine Erfahrung vor vier Jahren.

wxPython funktioniert auch gut mit py2exe. Ich habe gerade eine App überprüft, die ich habe. die gesamte Distribution betrug rund 11 MB. Das meiste davon waren die Wx-DLLs und Pyd-Dateien, aber ich kann nicht sehen, wie Sie das vermeiden würden. Wenn Sie Windows XP als Ziel haben, müssen Sie ein Manifest in Ihre setup.py einbinden, sonst sieht es hässlich aus. Details siehe this email.