2008-09-30 6 views
11

Je dois développer une application graphique de bureau de petite et moyenne taille, de préférence avec Python comme langue de choix en raison des contraintes de temps. Quels sont les choix de la bibliothèque de GUI qui me permettent de redistribuer mon application autonome, en supposant que les utilisateurs n'ont pas d'installation Python et n'ont évidemment pas les bibliothèques GUI que j'utilise?Redistribution d'applications Python

En outre, comment est-ce que j'irais tout emballer dans des binaires de taille raisonnable pour chaque OS cible? (Mes principales cibles sont Windows et Mac OS X)

Addition: J'ai regardé WxPython, mais je l'ai trouvé beaucoup d'histoires d'horreur de l'emballage avec cx_freeze et obtenir les binaires 30MB de +, et aucun réel des conseils sur la façon de effectivement faire l'emballage et comment c'est digne de confiance.

Répondre

0

Je l'ai utilisé py2exe moi-même - il est vraiment facile (au moins pour les petites applications).

1

http://Gajim.org pour Windows utilise python et PyGtk. Vous pouvez vérifier, comment ils l'ont fait. En outre, il y a PyQt pour GUI (et wxpython mentionné plus tôt).

2

Python a une boîte à outils GUI intégrée nommée TKinter qui est basée sur la bibliothèque Tk du langage de programmation TCL. Il est très basique et n'a pas toutes les fonctionnalités que vous attendez dans Windows Forms ou GTK par exemple, mais si vous devez avoir une boîte à outils indépendante de la plate-forme, je ne vois pas d'autre choix que vous ne voulez pas augmenter le binaire. Tkinter n'est pas difficile à utiliser car il n'a pas des millions de widgets/contrôles et d'options et est la boîte à outils par défaut incluse dans la plupart des distributions python, au moins sur Windows, OSX et Linux.

GTK et QT sont plus joli et plus puissant, mais ils ont un gros inconvénient pour vous: ils sont lourds et deppend sur tiers des bibliothèques, en particulier GTK qui a beaucoup de dépendances qui le rend un peu difficile de le distribuer embeded dans votre logiciel. En ce qui concerne la création binaire, je sais qu'il y a py2exe qui convertit le code python en code exécutable win32 (.exe) mais je ne suis pas sûr qu'il y ait quelque chose de similaire pour OSX. Êtes-vous inquiet parce que les gens pourraient voir le code source ou juste pour que vous puissiez regrouper tous dans un seul paquet? Si vous voulez juste pour regrouper tout ce que vous ne avez pas besoin de créer un exécutable autonome, vous pouvez facilement créer un programme d'installation:

Creating distributable in python

C'est un guide sur la façon de distribuer votre logiciel quand il est fait.

0

combinaison que je connais: wxPython, py2exe, UPX

La clé pour résoudre votre dernière préoccupation au sujet de la taille de la distribution utilise upx pour compresser les DLL. Il semble qu'ils prennent en charge les exécutables MacOS. Vous paierez une pénalité de décompression initiale lorsque les DLL sont chargées pour la première fois.

1

Je n'ai aucune expérience dans la création d'applications autonomes pour une plate-forme autre que Windows.

Cela dit:

Tkinter: fonctionne très bien avec py2exe. Python Megawidgets (une "bibliothèque d'extension" pour Tkinter) fonctionne très bien, mais il fait des choses géniales avec des importations dynamiques, donc vous devez combiner tous les composants dans un gros fichier "pmw.py" et l'ajouter à votre projet (enfin, vous aurez également pmwblt.py et pmwcolor.py). Il y a des instructions pour le faire quelque part (soit sur le wiki py2exe ou dans les docs de PMW). Tix (une extension de Tk que vous pouvez utiliser avec Tkinter) ne fonctionne pas avec py2exe, ou du moins c'était mon expérience il y a quatre ans.

wxPython fonctionne également très bien avec py2exe. Je viens de vérifier une application que j'ai; la distribution entière est venue à environ 11MB. La plupart de ces fichiers étaient les DLL wx et les fichiers .pyd, mais je ne vois pas comment vous pourriez éviter cela. Si vous ciblez Windows XP, vous devez inclure un manifeste dans votre fichier setup.py sinon il aura l'air moche. Voir this email pour plus de détails.