PyInstaller : Tout ce qu’il y a à savoir sur cette application Python

-
3
 m de lecture
-

La distribution d’une application Python n’est pas simple en soi car elle nécessite de prendre en compte un grand nombre de facteurs, notamment les bibliothèques mises à contribution. Toutefois, PyInstaller simplifie le processus de façon brillante.

Si vous avez eu l’opportunité de réaliser un développement avec un langage tel que Go ou Rust, vous avez probablement apprécié de pouvoir produire, lors de la compilation, un binaire exécutable unique. La distribution d’un tel exécutable est simple, puisqu’il n’est pas nécessaire de gérer des ressources externes au programme lors de son exécution : composants spécifiques liés à un OS, assets graphiques, autres logiciels… Dans l’immense majorité des cas, celui à qui vous avez remis un tel exécutable n’avait plus qu’à le lancer tel quel.

Lorsque vous développez dans un langage comme Python, l’opération de compilation est loin d’être aussi simple car l’exécutable va habituellement devoir nécessiter la présence de Python sur la machine cible, devoir être configuré en fonction de l’environnement d’accueil (Windows, MacOS, une version particulière de Linux…), intégrer l’accès à diverses bibliothèques externes

Qu'est ce que la solution PyInstaller ?

Par bonheur, Gordon McMillan, un développeur reconnu dans la communauté Python a clairement perçu qu’il existait un manque en la matière. Et en l’an 2000, il a donc attaqué le problème qui consisterait à pouvoir distribuer depuis un script Python un exécutable complètement autonome – et qui donc ne nécessiterait pas la présence d’une installation de Python et diverses dépendances sur la machine cible. Son projet a été nommé PyInstaller.

Comme bien souvent dans la communauté Python, d’autres développeurs ont apporté leur pierre à l’édifice et chemin faisant, un véritable service a pris forme.

Que fait PyInstaller ?

Lorsque vous soumettez un script Python à PyInstaller, celui-ci produit quatre éléments en sortie :

  • Une application disponible sous la forme d’un exécutable autonome (un fichier .exe sous Windows, un fichier .app pour MacOS, un fichier sans extension pour Linux), qui pourra être lancé tel quel sur la machine cible.
  • Un dossier dist (distribution) dans lequel figurent l’application précitée et aussi les dépendances nécessaires à son exécution. Telle est la beauté de la chose : vous n’avez nullement à gérer lesdites dépendances, c’est PyInstaller qui se charge de les repérer après avoir analysé votre script puis de les intégrer un à un au projet, tout comme il se charge d’intégrer un interpréteur Python. Et si vous avez spécifié « onefile », seul l’exécutable figure dans ce dossier. Celui qui exécute l’application ignore souvent qu’elle a été développée en Python.
  • Un dossier build abritant des fichiers temporaires générés lors de la création de l’application et qui n’est pas nécessaire pour sa distribution – il sert essentiellement au débogage.
  • Un fichier .spec : il s’agit d’un fichier de configuration par défaut pour l’exécutable qui est créé lors de la première exécution de PyInstaller sur un script Python. Habituellement, ce fichier doit être personnalisé : inclusion de certains modules, de fichiers de données (par exemple des images), icône propre à l’application… Une fois ce fichier .spec amendé comme il se doit, PyInstaller peut être relancé avec ce seul fichier .spec en vue de produire l’application exécutable désirée.

Pourquoi PyInstaller est si populaire ?

Comme on peut l’imaginer, les développeurs Python ont accueilli PyInstaller comme une bénédiction. Il se trouve qu’il est aisé à mettre en oeuvre, y compris lorsqu’on l’aborde pour la première fois.  La disponibilité du mode « onefile » a été perçue très positivement car elle produit un exécutable particulièrement simple d’emploi pour l’utilisateur de l’application. Par ailleurs, PyInstaller a l’avantage d’être multiplateforme : il peut produire du code pour Windows, MacOS, GNU/Linux, mais aussi sur des environnements Unix tels que Solaris ou FreeBSD.

Quelles alternatives à PyInstaller ?

Il existe diverses alternatives à PyInstaller, avec pour chacune, des avantages et inconvénients précis.

  • Cx_Freeze : tout comme PyInstaller, ce compilateur peut créer des exécutables pour Windows, MacOS et Linux. Lesdits exécutables sont d’une taille plus réduite et donc, se chargent plus rapidement. Toutefois, la documentation de Cx_Freeze est moins développée.
  • Nuitka : ce compilateur convertit le script Python en code C, qui une fois compilé, affiche de belles performances. Le revers étant que le temps de compilation est allongé.
  • BeeWare’s Briefcase : les applications qu’ils génèrent peuvent fonctionner sur ordinateur mais aussi  sur des plateformes mobiles. Toutefois, il est moins aisé de trouver de la documentation et des exemples d’usage.
Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?