Je veux créer un seul exécutable à partir de mon projet Python. Un utilisateur doit pouvoir le télécharger et l'exécuter sans avoir besoin d'installer Python. Si je ne faisais que distribuer un paquet, je pourrais utiliser pip, wheel et PyPI pour le construire et le distribuer, mais cela nécessite que l'utilisateur ait Python et sache comment installer des paquets. Que puis-je utiliser pour construire un exécutable autonome à partir d'un projet Python ?
Réponses
Trop de publicités?Voici quelques projets courants. Je n'ai inclus que les projets qui sont activement maintenus au moment de ma dernière édition (juillet 2021).
Sauf indication contraire, tous les programmes listés ci-dessous produiront un exe spécifique au système d'exploitation dans lequel ils sont exécutés. Ainsi, par exemple, l'exécution de Pyinstaller sous Windows produira un exe Windows, mais l'exécution de Pyinstaller sous Linux produira un exe Linux. Si vous souhaitez produire un fichier exe pour plusieurs systèmes d'exploitation, vous devrez envisager d'utiliser des machines virtuelles ou quelque chose de similaire. Vin .
Les programmes suivants fonctionnent tous de la même manière : ils regroupent Python et votre programme, les combinant effectivement pour produire un exécutable.
-
PyInstaller :
Prend en charge Python 3.5 - 3.9 sur Windows, Mac et Linux.
-
cx_Freeze :
Prend en charge Python 3.6 - 3.9 sur Windows, Mac et Linux.
-
py2exe :
Prend en charge Python 3.6 - 3.9 sous Windows uniquement.
-
py2app :
Supporte Python 2.7 ( ?) et Python 3 ( ?) sur Macs seulement. La gamme exacte des versions de Python supportées est actuellement non documentée.
Bien sûr, ce n'est pas la seule façon de faire les choses :
-
pynsiste :
Pynsist créera un installateur Windows pour votre programme qui installera directement Python sur l'ordinateur de l'utilisateur au lieu de l'inclure dans votre code et créera des raccourcis qui renvoient à votre script Python.
L'outil pynsist lui-même nécessite Python 3.5+ pour fonctionner, mais il est possible d'intégrer n'importe quelle version de Python à votre programme.
Pynsist créera des installateurs Windows uniquement, mais peut être exécuté depuis Windows, Mac et Linux. Voir leur FAQ pour plus de détails.
-
Nuitka :
Site web || Repo (miroir Github) || PyPi
Nuitka compilera littéralement votre code Python et produira un exe (par opposition aux autres projets, qui incluent simplement Python) pour essayer d'accélérer votre code. Comme effet secondaire, vous obtiendrez également un exe pratique que vous pourrez distribuer. Notez que vous devez avoir un Compilateur C++ disponibles sur votre système.
Prend en charge Python 2.6 - 2.7 et Python 3.3 - 3.9 sur Windows, Mac et Linux.
-
cython :
Cython est similaire à Nuitka dans la mesure où il s'agit d'un compilateur Python. Cependant, au lieu de compiler directement votre code, il le compilera en C. Vous pouvez ensuite prendre ce code C et transformer votre code en exe . Vous devez disposer d'un compilateur C sur votre système.
Prend en charge Python 2.6 - 2.7 et Python 3.3 - 3.9 sur Windows, Mac et Linux.
Ma préférence personnelle est d'utiliser PyInstaller car il a été le plus facile pour moi de le mettre en place et de le faire fonctionner, il a été conçu pour fonctionner agréablement avec diverses bibliothèques populaires telles que numpy ou pygame, et il est très compatible avec divers systèmes d'exploitation et versions de Python.
Cependant, j'ai également réussi à construire plusieurs exes en utilisant cx_Freeze sans trop de difficultés, donc vous devriez également envisager d'essayer ce programme.
Je n'ai pas encore eu l'occasion d'essayer pynist, Nuitka ou Cython de manière approfondie, mais ils semblent être des solutions intéressantes et innovantes. Si vous rencontrez des problèmes en utilisant le premier groupe de programmes, il pourrait être intéressant d'essayer l'un de ces trois programmes. Puisqu'ils fonctionnent de manière fondamentalement différente des programmes de type Pyinstaller/cx_freeze, ils pourraient réussir dans les cas particuliers où le premier groupe échoue.
En particulier, je pense que pynist est un bon moyen de contourner la question de la distribution de votre code : Les Macs et Linux ont déjà un support natif pour Python, et installer simplement Python sur Windows pourrait vraiment être la solution la plus propre. (L'inconvénient est que vous devez maintenant vous soucier de cibler plusieurs versions de Python + d'installer des bibliothèques).
Nuitka et Cython (dans mon expérience limitée) semblent fonctionner assez bien. Encore une fois, je ne les ai pas testés de manière approfondie 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".
Tout ceci étant dit, convertir votre programme Python en un exécutable n'est pas nécessairement la seule façon de distribuer votre code. Pour en savoir plus sur les autres options disponibles, consultez les liens suivants :
pyinstaller est toujours en cours de développement. Vous pouvez voir les derniers changements sur GitHub.
Il est compatible avec les trois principales plateformes :
- Windows (32 bits et 64 bits)
- Linux (32 bits et 64 bits)
- Mac OS X (32 bits et 64 bits)
et il supporte les versions 2.6 et 2.7 de Python. Il ne prend pas en charge Python 3, mais il existe une version expérimentale de Python 3. Branche Python 3 .
Mise à jour
À partir de la version 3.2.1, il supporte Python 2.7, 3.3-3.5.