Geler votre code

“Geler” (“Freezing”) votre code c’est créer un exécutable avec un seul fichier à distribuer aux utilisateurs finaux, qui contient tout le code de l’application ainsi que l’interpréteur Python.

Les appplications comme ‘Dropbox’, ‘Eve Online’, ‘Civilisation IV’, et des clients BitTorrent font cela.

L’avantage de la distribution de cette façon est que votre application va “juste marcher”, même si l’utilisateur n’a pas déjà la version requise de Python (ou aucune) installée. Sous Windows, et même sur de nombreuses distributions Linux et OS X, la bonne version de Python ne sera pas déjà installé.

En outre, le logiciel utilisateur final doit toujours être dans un format exécutable. Les fichiers se terminant par.py sont pour les ingénieurs logiciels et les administrateurs système.

Un inconvénient du freezing est qu’il augmentera la taille de votre distribution d’environ 2 à 12MB. En outre, vous serez responsable de délivrer des versions mises à jour de votre application lorsque des failles de sécurité Python sont patchées.

Alternatives au Freezing

Packager votre code est pour la distribution des bibliothèques ou d’outils pour d’autres développeurs.

Sous Linux, une alternative au freezing est decréer un paquet de distribution Linux (c’est à dire des fichiers .deb pour Debian ou Ubuntu, ou des fichiers .rpm pour Red Hat et SuSE.)

À faire

Compléter le stub “Geler votre code”

Comparaison des outils de Freezing

Solutions et plateformes/fonctionnalités supportées:

SolutionWindowsLinuxOS XPython 3

Licence

Mode fichier unique

Import de fichier Zip

Eggs

support pkg_resources

bbFreeze

oui

oui

oui

non

MIT

non

oui

oui

oui

py2exe

oui

non

non

oui

MIT

oui

oui

non

non

pyInstaller

oui

oui

oui

oui

GPL

oui

non

oui

non

cx_Freeze

oui

oui

oui

oui

PSF

non

oui

oui

non

py2app

non

non

oui

oui

MIT

non

oui

oui

oui

Note

Geler du code Python sous Linux dans un exécutable Windows a un jour été supporté dans PyInstalleret ensuite été supprimé..

Note

Toutes les solutions nécessitent que les dll MS Visual C++ soient installées sur la machine cible, excepté py2app. Seul Pyinstaller fait des .exe auto-exécutables qui embarque les dll quand on passe--onefile àConfigure.py.

Windows

bbFreeze

Le prérequis est d’installerPython, Setuptools et la dépendance pywin32 sous Windows.

À faire

Écrire les étapes pour les exécutables les basiques

py2exe

Le prérequis est d’installerPython sous Windows.

  1. Télécharger et installerhttp://sourceforge.net/projects/py2exe/files/py2exe/

  2. Écritsetup.py (Liste des options de configuration):

fromdistutils.coreimportsetupimportpy2exesetup(windows=[{'script':'foobar.py'}],)
  1. (Optionnellement)inclure l’icône

  2. (Optionnellement)Mode fichier unique

  3. Générez un.exe dans le répertoiredist:

$ python setup.py py2exe
  1. Fournissez les DLL du runtime Microsoft Visual C++. Deux options:installer globalement les dll sur ma machine cible oudistribuer les dll à côté du .exe.

OS X

py2app

PyInstaller

PyInstaller peut être utilisé pour construire des exécutables Unix et applications fenêtrées sur Mac OS X 10.6 (Snow Leopard) ou plus récent.

Pour installer PyInstaller, utilisez pip:

$ pip install pyinstaller

Pour créer un exécutable Unix standard, depuis disonsscript.py, utilisez:

$ pyinstaller script.py

cela créé,

  • un fichierscript.spec, analogue à un fichiermake

  • un dossierbuild, qui contient quelques fichiers de log

  • un dossierdist, qui contient l’exécutable principalscript, et quelques bibliothèques Python dépendantes,

toutes dans le même dossier quescript.py. PyInstaller met toutes les bibliothèques Python utilisées dansscript.py dans le dossierdist. Donc lors de la distribution de l’exécutable, distribuez l’ensemble du dossierdist.

Le fichierscript.spec peut être édité pourcustomiser le build, avec des options comme

  • Embarquer les fichiers de données avec l’exécutable

  • y compris les bibliothèques de run-time (fichiers.dll ou.so) que PyInstaller ne peut pas déduire automatiquement

  • ajout des options du run-time Python à l’exécutable,

Maintenantscript.spec peut être exécuter avecpyinstaller (plutôt que d’utiliser encorescript.py):

$ pyinstaller script.spec

Pour créer une application OS X autonome fenêtrée, utilisez l’option--windowed

$ pyinstaller --windowed script.spec

Cela crééscript.app dans le dossierdist. Assurez-vous d’utiliser des paquets graphiques dans votre code Python, commePyQt ouPySide, pour contrôler les parties graphiques de votre application.

Il y a plusieurs optionscript.spec liées à l’encapsulation d’applications Mac OS Xici. Par exemple, pour spécifier une icône pour l’application, utilisez l’optionicon=\path\to\icon.icns.

Linux

bbFreeze

PyInstaller