120 votes

Comment puis-je distribuer des programmes python?

Mon application ressemble à ceci:

main.py
windows/
__init__.py
mainwindow.py
...
modèle/
__init__.py
les ordres.py
...
ressources/
image1.png
logo.jpg
...

Le programme est lancé avec main.py. Est-il une bonne façon de créer un "final" de l'application? Je suis en train de penser à quelque chose comme py2exe/py2app, mais sans copier l'interpréteur python / modules dans l'application où l'on a un seul exécutable.

J'ai eu un coup d'oeil à distutils, mais cela ressemble, il installe un programme en Python répertoire, ce qui n'est pas habituel sur la non-plates-formes linux.

Pour le moment j'ai juste copier l'intégralité d'un dossier source sur la machine cible et de créer un alias pour l' main.pyw sur windows. Certains inconvénients:

  • L'icône est la valeur par défaut de python icône.
  • J'ai créer l'alias manuellement.
  • Dans mon répertoire source, il y a beaucoup de fichiers supplémentaires comme le contrôle de la source de dossier.
  • - Je renommer main.py de main.pyw manuellement.
  • Ce serait bien si seulement".pyo* les fichiers sont sur la machine cible. Il n'y a pas de raison, je n'aime pas avoir les fichiers inutiles.

Comment créer une belle distribution automatique?

  • pour windows? (C'est la seule plate-forme que j'ai à soutien à le moment).
  • pour mac?
  • pour linux?

76voto

Daniel Naab Points 9857

Je recommande fortement Pyinstaller, qui prend en charge toutes les principales plates-formes assez transparente. Comme py2exe et py2app, il produit un exécutable standard sur Windows et d'une application bundle sur OS X, mais a l'avantage d'avoir aussi fait un travail fantastique de l'auto-résolution des dépendances en commun, et y compris, sans supplément de réglages de configuration.

Notez également que si vous êtes le déploiement de la version 2.6 de Python pour Windows, vous devez appliquer ce correctif à Pyinstaller tronc.

Vous avez indiqué que vous n'avez pas besoin d'un installateur, mais Inno Setup est un outil facile à utiliser et rapide d'installation de choix pour la plateforme Windows.

41voto

Lennart Regebro Points 52510

La manière normale de la distribution de Python applications est avec distutils. Elle est faite à la fois pour la distribution de bibliothèque de type de modules python, python et des applications, même si je ne sais pas comment il fonctionne sur Windows. Vous le feriez sur Windows installer Python séparément si vous utilisez distutils, en tout cas.

Je serais probablement vous recommandons de le distribuer avec disutils pour Linux, et Py2exe ou quelque chose de similaire pour Windows. Pour OS X je ne sais pas. Si c'est un utilisateur final de l'application, vous souhaiterez probablement une image de disque type de chose, je ne sais pas comment faire. Mais à lire ce post pour plus d'informations sur l'expérience de l'utilisateur. Pour une demande faite pour les programmeurs, vous êtes probablement OK avec un distutils type d'installer sur OS X aussi.

5voto

EOL Points 24342

Fredrik Lundh de l' squeeze.py pouvez créer un seul fichier qui ne contient pas l'interpréteur Python, mais au lieu de cela contient le bytecode. Avec les bons arguments, vous pouvez inclure d'autres fichiers, les modules, etc. dans le fichier de résultat. Je l'ai utilisé avec succès dans un projet. Le programme qui a couru sur OS X, Linux et Windows sans aucun problème!

PS: Chaque machine doit avoir un interpréteur Python qui est compatible avec le bytecode généré par squeeze.py. Vous pouvez générer du bytecode versions pour les différentes versions de Python, en cas de besoin (il suffit d'exécuter squeeze.py avec la bonne version de Python).

4voto

Samy Bencherif Points 116

Je me trompe peut-être, mais IronPython n’a-t-il pas un compilateur intégré pour Windows?

http://www.ironpython.net

[MODIFIER]

Essayez Cx_Freeze, de loin le meilleur compilateur .py en .exe (plus quelques .dlls) que j'ai jamais utilisé.

http://cx-freeze.sourceforge.net/

2voto

Byron Whitlock Points 29863

Si vous distribuez sur Windows, utilisez un installateur pour installer tous les fichiers / interpéters pertinents, le cas échéant. Distribuez un fichier setup.exe. C'est la meilleure façon sur les fenêtres. Sinon, les utilisateurs vont se plaindre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X