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:
Solution | Windows | Linux | OS X | Python 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.
Télécharger et installerhttp://sourceforge.net/projects/py2exe/files/py2exe/
Écrit
setup.py
(Liste des options de configuration):
fromdistutils.coreimportsetupimportpy2exesetup(windows=[{'script':'foobar.py'}],)
(Optionnellement)inclure l’icône
(Optionnellement)Mode fichier unique
Générez un
.exe
dans le répertoiredist
:
$ python setup.py py2exe
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.
PyInstaller¶
Le prérequis est d’avoir installéPython, Setuptools et la dépendance pywin32 sous Windows.
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 fichier
script.spec
, analogue à un fichiermake
un dossier
build
, qui contient quelques fichiers de logun dossier
dist
, 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 automatiquementajout 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
.