Mon application ressemble à ceci:
main.py windows/ __init __. py mainwindow.py ... modèle/ __init __. py orders.py ... Ressources/ image1.png logo.jpg ...
Le programme est lancé avec main.py. Existe-t-il un bon moyen de créer une application "finale"? Je pense à quelque chose comme py2exe/py2app, mais sans copier l'interpréteur/les modules python dans l'application où l'on n'a qu'un seul exécutable.
J'ai jeté un coup d'œil à distutils, mais il semblerait que cela installe un programme dans le répertoire Python, ce qui n'est pas habituel sur des plateformes autres que Linux.
Pour le moment, je copie simplement l'intégralité du dossier source sur la machine cible et crée un alias pour main.pyw
sous Windows. Quelques inconvénients:
main.py
en main.pyw
manuellement.Comment créer une distribution automatisée Nice?
La méthode normale de distribution des applications Python est avec distutils . Il est conçu à la fois pour distribuer des modules python de type bibliothèque et des applications python, bien que je ne sache pas comment cela fonctionne sous Windows. Sous Windows, vous devez dans tous les cas installer Python séparément si vous utilisez distutils.
Je vous recommanderais probablement 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 une application d'utilisateur final, vous voudrez probablement un type d'image disque, je ne sais pas comment le faire. Mais lisez cet article pour plus d’informations sur l’expérience utilisateur. Pour une application faite pour les programmeurs, vous êtes probablement d'accord avec une installation de type distutils sur OS X également.
Je recommande fortement Pyinstaller , qui prend en charge les principales plates-formes de manière assez transparente. Comme py2exe et py2app, il produit un exécutable standard sous Windows et un ensemble d'applications sous OS X, mais présente l'avantage de permettre également un travail fantastique de résolution automatique des dépendances courantes et de les inclure sans modifications de configuration supplémentaires.
Notez également que si vous déployez Python 2.6 sur Windows, vous devez appliquer le correctif this patch à la désinstallation de Pyinstaller.
Vous avez indiqué que vous n’avez pas besoin d’un programme d’installation, mais Inno Setup est un choix facile à utiliser et rapide à installer pour la plate-forme Windows.
Fredrik Lundh squeeze.py
peut créer un seul fichier qui ne contient pas l'interpréteur Python, mais qui contient du bytecode. Avec les bons arguments, vous pouvez inclure d'autres fichiers, modules, etc. dans le fichier de résultat. Je l'ai utilisé avec succès dans un projet. Le programme résultant a fonctionné sous OS X, Linux et Windows sans aucun problème!
PS: chaque ordinateur doit disposer d'un interpréteur Python compatible avec le bytecode généré par squeeze.py. Vous pouvez générer différentes versions de bytecode pour différentes versions de Python, le cas échéant (exécutez simplement squeeze.py avec la bonne version de Python).
Je me trompe peut-être, mais IronPython n’a-t-il pas un compilateur intégré pour Windows?
[MODIFIER]
Essayez Cx_Freeze, de loin le meilleur compilateur .py en .exe (plus quelques .dlls) que j'ai jamais utilisé.
Je pense que cela vaut également la peine de mentionner _ PEX ((considérant plus l'attention que cette question a suscité et moins la question elle-même). Selon sa propre description :
Les fichiers PEX sont des environnements virtuels Python exécutables autonomes. Plus spécifiquement, ce sont des fichiers Zip soigneusement construits avec un
#!/usr/bin/env python
et un__main__.py
spécial qui vous permettent d’interagir avec le runtime PEX. Pour plus d'informations sur les applications Zip, voir PEP 441 .
Je suis tombé dessus quand j'ai lu un aperçu du packaging pour Python . Ils ont posté cette belle photo ici:
Pour résumer: si vous pouvez vous permettre de vous fier à l’installation de python sur la machine cible, utilisez PEX pour produire un "exécutable" autonome, qui aura probablement une taille de fichier inférieure à celle d’un exécutable produit par PyInstaller, par exemple.
Si vous distribuez sur Windows, utilisez un installer pour installer tous les fichiers/interpet 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.
Le moyen le plus pratique * de distribuer des applications de bureau python sur plusieurs plates-formes est de faire appel au gestionnaire de paquets conda multiplate-forme. Il existe plusieurs outils qui l'utilisent:
* Le plus pratique pour le développeur. Assez pratique pour l'utilisateur final.