Question

Je dois développer une application graphique de bureau de taille petite à moyenne, de préférence avec Python comme langage de choix en raison de contraintes de temps.

Quels sont les choix de bibliothèques d'interface graphique qui me permettent de redistribuer mon application en mode autonome, en supposant que les utilisateurs ne disposent pas d'une installation Python fonctionnelle et, bien entendu, des bibliothèques d'interface graphique que j'utilise non plus?

De plus, comment pourrais-je emballer tout dans des fichiers binaires de taille raisonnable pour chaque système d'exploitation cible? (Mes principales cibles sont Windows et Mac OS X)

Ajout: Je me suis intéressé à WxPython, mais j’ai trouvé plein d’histoires horribles sur son emballage avec cx_freeze et l’obtention de fichiers binaires de 30 Mo +, et aucun véritable conseil sur la façon dont réellement faire l’emballage et comment digne de confiance. c'est.

Était-ce utile?

La solution

http://wiki.wxpython.org/CreatingStandaloneExecutables

Il ne devrait pas être aussi gros à moins que vous ayez réussi à inclure la version de débogage de wx. Il me semble me rappeler environ 4 Mo pour python.dll et similair pour wx.

Autres conseils

Python possède une boîte à outils graphique intégrée nommée TKinter qui est basée sur la bibliothèque Tk de la programmation TCL la langue. 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 disposer d’une boîte à outils indépendante de la plate-forme, je ne vois pas d’autre choix, sachant que vous ne voulez pas non plus développer autant le binaire.

Tkinter n’est pas du tout difficile à utiliser car il ne contient pas des millions de widgets / contrôles et options et constitue la boîte à outils par défaut incluse dans la plupart des distributions Python, du moins sous Windows, OSX et Linux.

GTK et QT sont plus jolis et plus puissants, mais ils ont un gros inconvénient pour vous: ils sont lourds et dépendent des troisièmes bibliothèques, en particulier GTK qui a beaucoup de dépendances qui le rend un peu difficile à distribuer. intégré dans votre logiciel.

En ce qui concerne la création binaire, je sais qu'il existe py2exe qui convertit le code python en code exécutable win32 (.exe), mais je ne sais pas s'il existe quelque chose de similaire pour OSX. Etes-vous inquiet parce que les gens pourraient voir le code source ou simplement pour pouvoir tout regrouper dans un seul paquet? Si vous souhaitez simplement regrouper tout ce dont vous n’avez pas besoin pour créer un fichier exécutable autonome, vous pouvez facilement créer un programme d’installation:

Création d'un fichier distribuable en python

C’est un guide sur la façon de distribuer votre logiciel une fois terminé.

http://Gajim.org pour Windows utilise python et PyGtk. Vous pouvez vérifier comment ils l'ont fait. De plus, PyQt pour l’interface graphique (et wxpython déjà mentionné).

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

Cela dit:

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

wxPython fonctionne également très bien avec py2exe. Je viens de vérifier une application que j'ai; l'ensemble de la distribution a atteint environ 11MB. Il s’agissait pour la plupart de fichiers wx DLL et .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 celui-ci aura l'air moche. Voir cet email pour plus de détails.

J'ai moi-même utilisé py2Exe - c'est très simple (du moins pour les petites applications).

Combinaison que je connais bien: wxPython, py2exe, upx

Pour résoudre votre dernier problème concernant la taille de la distribution, utilisez upx pour compresser les DLL. . On dirait qu'ils supportent les exécutables MacOS. Vous devrez payer une pénalité de décompression initiale lors du premier chargement des DLL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top