3. Distribution par outils
Il est heureusement possible de distribuer une application Python comme un paquet
autonome à destination d'une machine cible qui ne contient pas (forcément) Python. Le
terme consacré est le freezing : on va figer et empaqueter tout ce qui est nécessaire à
l'exécution, y compris l'environnement Python et PyQt. À l'inverse de l'approche vue
précédemment, on n'a plus besoin d'avoir Python/PyQt installés sur la machine cible ;
de plus, on est sûr d'avoir les bonnes versions, quelles que soient celles éventuellement
déjà installées sur la machine cible ; on est sûr aussi de ne pas interférer avec celles-ci.
À partir du paquet d'installation, qu'il soit copié ou téléchargé, l'effort d'installation
pour l'utilisateur est minimal et surtout… standard !
Dans l'écosystème Python, il existe plusieurs outils pour faire cela : cx_Freeze,
bbFreeze, py2exe, PyInstaller et py2app. Chacun présente ses particularités (support
Python 3, multiplateformes, licence, etc.). Parmi ces outils, nous avons choisi de
présenter en détail PyInstaller qui a le mérite d'être multiplateforme, de supporter PyQt
sans effort et d'être très simple d'utilisation.
Par ailleurs, Riverbank Computing Limited (la société qui développe PyQt) propose
aussi un outil spécifique pour PyQt : pyqtdeploy. Beaucoup plus complexe d'utilisation,
il vous sera présenté succinctement. Précisons tout de go que pyqtdeploy a une
philosophie très différente des outils classiques de freezing évoqués plus haut ; il est
plus difficile à mettre en œuvre que PyInstaller, mais il permet notamment le
croisement des plateformes comme nous le verrons plus loin.
3.1. PyInstaller
PyInstaller est un outil de freezing Python qui a les caractéristiques suivantes :
il supporte Python 2.7 et 3.3+ ;
il découvre automatiquement les modules à inclure à partir du programme
principal Python ;
il supporte nativement nombre de bibliothèques externes, telles que Django,
maplotlib, numpy, pandas et, surtout, PyQt (4 et 5) ;
44
Il est heureusement possible de distribuer une application Python comme un paquet
autonome à destination d'une machine cible qui ne contient pas (forcément) Python. Le
terme consacré est le freezing : on va figer et empaqueter tout ce qui est nécessaire à
l'exécution, y compris l'environnement Python et PyQt. À l'inverse de l'approche vue
précédemment, on n'a plus besoin d'avoir Python/PyQt installés sur la machine cible ;
de plus, on est sûr d'avoir les bonnes versions, quelles que soient celles éventuellement
déjà installées sur la machine cible ; on est sûr aussi de ne pas interférer avec celles-ci.
À partir du paquet d'installation, qu'il soit copié ou téléchargé, l'effort d'installation
pour l'utilisateur est minimal et surtout… standard !
Dans l'écosystème Python, il existe plusieurs outils pour faire cela : cx_Freeze,
bbFreeze, py2exe, PyInstaller et py2app. Chacun présente ses particularités (support
Python 3, multiplateformes, licence, etc.). Parmi ces outils, nous avons choisi de
présenter en détail PyInstaller qui a le mérite d'être multiplateforme, de supporter PyQt
sans effort et d'être très simple d'utilisation.
Par ailleurs, Riverbank Computing Limited (la société qui développe PyQt) propose
aussi un outil spécifique pour PyQt : pyqtdeploy. Beaucoup plus complexe d'utilisation,
il vous sera présenté succinctement. Précisons tout de go que pyqtdeploy a une
philosophie très différente des outils classiques de freezing évoqués plus haut ; il est
plus difficile à mettre en œuvre que PyInstaller, mais il permet notamment le
croisement des plateformes comme nous le verrons plus loin.
3.1. PyInstaller
PyInstaller est un outil de freezing Python qui a les caractéristiques suivantes :
il supporte Python 2.7 et 3.3+ ;
il découvre automatiquement les modules à inclure à partir du programme
principal Python ;
il supporte nativement nombre de bibliothèques externes, telles que Django,
maplotlib, numpy, pandas et, surtout, PyQt (4 et 5) ;
44
