Je souhaite créer un seul exécutable à partir de mon projet Python. Un utilisateur devrait pouvoir le télécharger et l'exécuter sans avoir besoin d'installer Python. Si je distribuais juste un package, je pourrais utiliser pip, wheel et PyPI pour le construire et le distribuer, mais cela nécessite que l'utilisateur dispose de Python et sache comment installer des packages. Que puis-je utiliser pour créer un exécutable autonome à partir d'un projet Python?
python
compilation
exe
packaging
software-distribution
ShadowFlame
la source
la source
pdb
) n'avez pas un accès facile aux fichiers en cours d'exécution,py2exe
( je ne sais pas pour les autres) n'inclut pas les.py
fichiers, vous ne verrez donc pas les lignes source dans les traces de pile.Réponses:
Voici quelques exemples courants. Sauf indication contraire, tous les projets énumérés ci-dessous sont activement maintenus à partir de ma dernière modification (janvier 2020).
J'ai également inclus des liens vers leurs sites Web respectifs, leurs dépôts et leurs listes PyPi au cas où vous voudriez vérifier par vous-même à quelle fréquence ils ont été mis à jour.
Aussi, sauf indication contraire, tous les programmes listés ci-dessous produiront un exe spécifiquement pour le système d'exploitation dans lequel il s'exécute. Ainsi, par exemple, exécuter Pyinstaller sous Windows produira un exe Windows, mais exécuter Pyinstaller sous Linux produira un exe Linux. Si vous souhaitez produire un exe pour plusieurs systèmes d'exploitation, vous devrez vous pencher sur l'utilisation de machines virtuelles ou envisager d'utiliser quelque chose comme Wine .
Les programmes suivants fonctionnent tous de la même manière - ils regroupent Python et votre programme, les combinant efficacement pour produire un exécutable.
PyInstaller:
cx_Freeze:
py2app:
Remarque: les versions précédentes de ce post incluaient des écritures pour py2exe ( repo ) et bbfreeze ( repo ). Les deux projets ont été supprimés de cette liste: ils ont vu peu ou pas d'activité pendant plusieurs années et semblent être complètement non maintenus. Voir l'historique des modifications pour les anciennes écritures.
Bien sûr, ce n'est pas la seule façon de faire les choses:
pynsiste:
Autres notes: Pynsist semble prendre en charge le regroupement de toute version arbitraire de Python avec votre application. Cependant, l'outil lui-même nécessite Python 3.5+ pour s'exécuter.
Pynsist créera un programme d'installation Windows pour votre programme qui installera directement Python sur l'ordinateur de l'utilisateur au lieu de le regrouper avec votre code et créera des raccourcis qui relient votre script Python. Bien que ce programme ne produise que des programmes d'installation Windows, il semble que vous puissiez toujours exécuter Pynsist sur les ordinateurs Mac et Linux.
Nuitka:
cython:
Ma préférence personnelle est d'utiliser PyInstaller car c'était le plus facile pour moi de démarrer, a été conçu pour fonctionner correctement avec diverses bibliothèques populaires telles que numpy ou pygame, et a une grande compatibilité avec divers systèmes d'exploitation et versions de Python.
Cependant, j'ai également construit avec succès divers ex en utilisant cx_Freeze sans trop de difficulté, vous devriez donc également envisager d'essayer ce programme.
Je n'ai pas encore eu l'occasion d'essayer de manière approfondie pynist, Nuitka ou Cython, mais elles semblent être des solutions assez intéressantes et innovantes. Si vous rencontrez des problèmes lors de l'utilisation du premier groupe de programmes, il peut être intéressant d'essayer l'un de ces trois programmes. Comme ils fonctionnent fondamentalement différemment des programmes de style Pyinstaller / cx_freeze, ils pourraient réussir dans les cas extrêmes où le premier groupe échoue.
En particulier, je pense que pynist est un bon moyen d'éviter tout le problème de la distribution de votre code: les Mac et Linux ont déjà un support natif pour Python, et le simple fait d'installer Python sur Windows pourrait vraiment être la solution la plus propre. (L'inconvénient est maintenant que vous devez vous soucier de cibler plusieurs versions de Python + installer des bibliothèques).
Nuitka et Cython (d'après mon expérience limitée) semblent fonctionner assez bien. Encore une fois, je ne les ai pas testés intensivement moi-même, et donc ma principale observation est qu'ils semblent prendre beaucoup plus de temps pour produire un exe que les programmes de style "freeze".
Cela étant dit, convertir votre programme Python en exécutable n'est pas forcément le seul moyen de distribuer votre code. Pour en savoir plus sur les autres options disponibles, consultez les liens suivants:
la source
msvcrxx.dll
, oùxx
est un numéro de version) pour faire fonctionner le .exe (ou demander aux utilisateurs de l'installer eux-mêmes). Cela est nécessaire car Python est construit sur Windows à l'aide de Visual Studio.pyinstaller est toujours en développement actif. Vous pouvez voir les dernières modifications sur GitHub.
Il prend en charge les trois principales plates-formes:
et il prend en charge les versions 2.6 et 2.7 de Python. Il ne prend pas en charge Python 3, mais il existe une branche expérimentale Python 3 .
Mise à jour
À partir de la version 3.2.1, il prend en charge Python 2.7, 3.3-3.5
la source
Meilleure utilisation
pip install auto-py-to-exe
qui fournit une belle interface utilisateur avec toutes les options nécessaires pour créer un exécutable.Après l'installation, tapez simplement
auto-py-to-exe
votre terminal ou votre invite de commande.la source