154 votes

Créer un seul exécutable à partir d'un projet Python

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 ?

175voto

Michael0x2a Points 9116

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 :

    Site web || Repo || PyPi

    Prend en charge Python 3.5 - 3.9 sur Windows, Mac et Linux.

  • cx_Freeze :

    Site web || Repo || PyPi

    Prend en charge Python 3.6 - 3.9 sur Windows, Mac et Linux.

  • py2exe :

    Site web || Repo || PyPi

    Prend en charge Python 3.6 - 3.9 sous Windows uniquement.

  • py2app :

    Site web || Repo || PyPi

    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 :

    Site web || Repo || PyPi

    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 :

    Site web || Repo || PyPi

    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 :

14voto

jterrace Points 21939

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.

13voto

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 dans votre terminal ou votre invite de commande.

Auto-py-to-exe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X