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 de cré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 PyInstaller et 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’installer Python, Setuptools et la dépendance pywin32 sous Windows.
À faire
Écrire les étapes pour les exécutables les basiques
py2exe¶
Le prérequis est d’installer Python sous Windows.
Télécharger et installer http://sourceforge.net/projects/py2exe/files/py2exe/
Écrit
setup.py
(Liste des options de configuration):
from distutils.core import setup
import py2exe
setup(
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 ou distribuer 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 disons script.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 que script.py
. PyInstaller met toutes les bibliothèques Python utilisées dans script.py
dans le dossier dist
. Donc lors de la distribution de l’exécutable, distribuez l’ensemble du dossier dist
.
Le fichier script.spec
peut être édité pour customiser 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,
Maintenant script.spec
peut être exécuter avec pyinstaller
(plutôt que d’utiliser encore script.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 dossier dist
. Assurez-vous d’utiliser des paquets graphiques dans votre code Python, comme PyQt ou PySide, pour contrôler les parties graphiques de votre application.
Il y a plusieurs option script.spec
liées à l’encapsulation d’applications Mac OS X ici. Par exemple, pour spécifier une icône pour l’application, utilisez l’option icon=\path\to\icon.icns
.