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:
- Liens : Site Web || Repo || PyPi
- Prise en charge : Python 2.7 et Python 3.4 - 3.7 sous Windows, Mac et Linux.
cx_Freeze:
- Liens: Site Web || Repo || PyPi
- Prise en charge: Python 2.7 et 3.5 - 3.8 sur Windows, Mac et Linux.
py2app:
- Liens: Site Web || Repo || PyPi
- Prise en charge: Python 2.7 et 3.3 (?) - 3.7 (?) Sur Mac uniquement.
- Remarque: lors de ma dernière modification, je n'ai pas été en mesure de déterminer de manière concluante la plage exacte des versions de Python prises en charge par pyapp. La dernière version mentionne la prise en charge de Python 3.7.
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:
- Liens: Site Web || Repo || PyPi
- Prise en charge: toutes les versions de Python? Remarque - créera uniquement des installateurs Windows .
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:
- Liens: Site Web || Repo (miroir Github) || PyPi
- Prise en charge: Python 2.6 - 2.7 et Python 3.3 - 3.7 sous Windows, Mac et Linux.
- Autres notes: Nuitka compilera littéralement votre code Python et produira un exe (contrairement aux autres projets, qui incluent simplement Python) pour essayer d'accélérer votre code. En tant qu'effet secondaire, vous obtiendrez également un exe pratique que vous pourrez distribuer. Notez que vous devez avoir un compilateur C ++ disponible sur votre système.
cython:
- Liens: Site Web || Repo || PyPi
- Prise en charge: Python 2.6 - 2.7 et Python 3.2 - 3.8 sur Windows, Mac et Linux.
- Autres notes: Cython est similaire à Nuitka en ce sens qu'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 un exe . Vous aurez besoin d'un compilateur C disponible sur votre système.
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: