Mon application ressemble à ceci:
main.py les fenêtres/ __init__.py mainwindow.py ... modèle/ __init__.py commandes.py ... Ressources/ image1.png logo.jpg ...
Le programme démarre avec main.py. Y a-t-il un bon moyen d'en créer une application «finale»? Je pense à quelque chose comme py2exe / py2app, mais sans copier l'interpréteur / 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 semble que cela installe un programme dans le répertoire Python, ce qui n'est pas habituel sur les plates-formes non Linux.
Pour le moment, je copie simplement le dossier source entier sur la machine cible et crée un alias main.pyw
sur Windows. Quelques inconvénients:
- L'icône est l'icône python par défaut.
- Je dois créer l'alias manuellement.
- Dans mon répertoire source, il y a beaucoup de fichiers supplémentaires comme le dossier de contrôle de source.
- Je dois renommer
main.py
à lamain.pyw
main. - Ce serait bien si seuls les fichiers `.pyo * se trouvent sur la machine cible. Il n'y a pas de vraie raison à cela, je n'aime tout simplement pas avoir des fichiers inutiles.
Comment créer une belle distribution automatisée?
- Pour les fenêtres? (C'est la seule plateforme que je dois prendre en charge pour le moment.)
- pour Mac?
- pour linux?
Réponses:
La manière normale de distribuer des applications Python est avec distutils . Il est conçu à la fois pour la distribution de modules python de type bibliothèque et d'applications python, bien que je ne sache pas comment cela fonctionne sous Windows. Vous auriez sous Windows à installer Python séparément si vous utilisez distutils, dans tous les cas.
Je vous recommanderais probablement de le distribuer avec disutils pour Linux et Py2exe ou quelque chose de similaire pour Windows. Pour OS XI ne sais pas. Si c'est une application utilisateur final, vous voudriez probablement un type d'image disque, je ne sais pas comment faire cela. Mais lisez cet article pour plus d'informations sur l'expérience utilisateur de celui-ci. Pour une application conçue pour les programmeurs, vous êtes probablement d'accord avec une installation de type distutils sur OS X aussi.
la source
dist
et y copier tous les fichiers pertinents?Je recommande vivement Pyinstaller , qui prend en charge toutes les principales plates-formes de manière assez transparente. Comme py2exe et py2app, il produit un exécutable standard sur Windows et un ensemble d'applications sur OS X, mais a également l'avantage de faire 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 ce correctif au tronc 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 à configurer pour la plate-forme Windows.
la source
Hello world
programme simple prendrait 500 Mo d'espace et 3-5 secondes d'initialisation.Fredrik Lundh
squeeze.py
peut créer un seul fichier qui ne contient pas l'interpréteur Python, mais contient à la place du bytecode. Avec les bons arguments, vous pouvez inclure d'autres fichiers, modules, etc. dans le fichier de résultats. 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 machine a besoin 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, si nécessaire (exécutez simplement squeeze.py avec la bonne version de Python).
la source
Je pense qu'il vaut également la peine de mentionner PEX (compte tenu davantage de l'attention que cette question a reçue et moins de la question elle-même). Selon sa propre description :
Je suis tombé dessus en lisant un aperçu de l'empaquetage pour python . Ils y ont posté cette belle photo:
Pour résumer: Si vous pouvez vous permettre de compter sur l'installation de python sur la machine cible, utilisez PEX pour produire un »exécutable« autonome qui aura probablement une taille de fichier plus petite qu'un exécutable produit par PyInstaller, par exemple.
la source
Je peux me tromper, mais IronPython n'a-t-il pas un compilateur intégré pour Windows?
http://www.ironpython.net
[ÉDITER]
Essayez Cx_Freeze, de loin le meilleur compilateur .py vers .exe (plus quelques .dlls) que j'ai jamais utilisé.
http://cx-freeze.sourceforge.net/
la source
Si vous distribuez sous Windows, utilisez un programme d'installation pour installer tous les fichiers / interpeter pertinents, tout ce qui est nécessaire. Distribuez un setup.exe. C'est la meilleure façon sur Windows. Sinon, les utilisateurs se plaindront.
la source
Le moyen multiplateforme le plus pratique * de distribuer des applications de bureau python est de s'appuyer sur le gestionnaire de packages conda multiplateforme. Il existe plusieurs outils qui l'utilisent:
* Le plus pratique pour le développeur. Assez pratique pour l'utilisateur final.
la source