Optimiser la taille des exécutables PyInstaller

PyInstaller offre plusieurs options de ligne de commande pour réduire la taille des fichiers exécutables générés.

1. Modes de compilation : --onefile vs --onedir

  • --onefile (ou -F) : Empaquette tout le contenu de l'application dans un unique fichier exécutable .exe. L'avantage est la facilité de distribution, ne nécessitant qu'un seul fichier. Cependant, cela peut entraîner un temps de démarrage plus long, car l'application doit d'abord se décompresser dans un répertoire temporaire, ce qui peut aussi augmenter légèrement la taille totale.
  • --onedir (par défaut) : Crée un répertoire contenant l'exécutable principal et toutes ses dépendances (bibliothèques, etc.). Ce mode offre un démarrage plus rapide et facilite le débogage. L'inconvénient est qu'il faut distribuer tout le répertoire, ce qui est moins pratique.

Pour les scénarios où la taille minimale et la rapidité de démarrage sont primordiales, --onedir peut être préférable, même s'il implique la distribution d'un dossier. Néanmoins, pour des raisons de simplicité, --onefile est souvent privilégié, combiné à d'autres techniques d'optimisation.

2. Suppression de la console : --noconsole

Si votre application dispose d'une interface graphique (GUI) ou si vous ne souhaitez pas qu'une fenêtre de console apparaisse lors de son exécution, utilisez l'option --noconsole (ou -w). Cela peut aussi contribuer à réduire légèrement la taille du fichier.

pyinstaller --onefile --noconsole mon_app.py

3. Suppression des symboles de débogage : --strip

L'option --strip tente de supprimer les symboles de débogage des fichiers exécutables et des bibliothèques inclus. Cela peut réduire considérablement la taille du fichier, au détriment de la facilité de débogage. C'est une option particulièrement utile pour la publication de la version finale.

pyinstaller --onefile --noconsole --strip mon_app.py

4. Exclusion de modules : --exclude-module

Si votre programme n'utilise pas certains modules d'une bibliothèque standard ou tierce, mais que PyInstaller les inclut par erreur, vous pouvez utiliser l'option --exclude-module pour les exclure. Par exemple, si votre application est purement en ligne de commande et n'a pas besoin de tkinter :

pyinstaller --onefile --noconsole --exclude-module tkinter mon_app.py

Attention : Assurez-vous que les modules que vous excluez ne sont effectivement pas utilisés par votre programme ou ses dépendances, sous peine de provoquer des erreurs à l'exécution.

5. Chemins de recherche : --paths

L'option --paths (ou -p) permet d'ajouter des répertoires supplémentaires où PyInstaller doit rechercher les modules. Bien que cela n'affecte pas directement la taille du fichier, cela peut résoudre les problèmes de dépendances manquantes.

6. Compression avec UPX

UPX (Ultimate Packer for eXecutables) est un outil gratuit et open-source capable de compresser fortement les fichiers exécutables (.exe, .dll, etc.), réduisant ainsi leur taille. PyInstaller peut s'intégrer à UPX.

Étapes d'utilisation :

  1. Téléchargez UPX : Rendez-vous sur le site officiel de UPX (https://upx.github.io/) et téléchargez la version la plus récente correspondant à votre système d'exploitation.
  2. Extrayez UPX : Décompressez le contenu dans un emplacement facile d'accès, par exemple C:\chemin\vers\upx.
  3. Utilisation avec PyInstaller : Lors de l'exécution de pyinstaller, spécifiez le chemin du répertoire contenant l'exécutable UPX à l'aide de l'option --upx-dir. ```

    Exemple si UPX est extrait dans C:\chemin\vers\upx

     pyinstaller --onefile --noconsole --strip --upx-dir C:\chemin\vers\upx mon_app.py
    
    
     Si vous ajoutez le chemin de `upx.exe` à la variable d'environnement système `PATH`, vous pourrez utiliser `--upx-dir .` ou omettre complètement cette option, car PyInstaller tentera de le trouver automatiquement.
    
    

Considérations sur UPX :

  • Taux de compression élevé : UPX peut réduire la taille des fichiers jusqu'à 50% ou plus.
  • Faux positifs des antivirus : En raison de la modification de la structure des exécutables, certains logiciels antivirus peuvent signaler à tort les fichiers compressés par UPX comme étant des virus ou des logiciels malveillants. C'est un effet secondaire courant mais généralement sans danger. Vous pouvez ajouter ces fichiers à la liste blanche de votre antivirus ou éviter UPX si la sécurité est une préoccupation majeure lors de la distribution.

Étiquettes: PyInstaller exe taille Optimisation upx

Publié le 8 juillet à 22h36