Comment compiler son programme Python avec cx_Freeze ?

Compiler son programme Python avec cx_Freeze

La Compilation d’un programme est une étape majeur de la programmation. C’est pour cette raison que nous allons aujourd’hui voir comment compiler son code écrit en python grâce à cx_Freeze, une librairie permettant à ses utilisateurs de compiler le code de leur programme afin de le transformer en exécutable, et cela que ça soit sur Linux, MacOS ou Windows.

Prérequis

Premièrement, il nous faudra installer la librairie de cx_Freeze.

pip install cx_Freeze

Si vous utilisez Anaconda, il est préférable de l’installer via la commande conda de l’Anaconda prompt :

conda install cx_Freeze

Pour le tutoriel, nous compilerons un simple programme graphique utilisant la librairie Tkinter, affichant une image et ayant un icône.

Compiler son programme Python avec cx_Freeze

Étape 1 : Création de setup.py

La première étape pour compiler son programme est de créer, dans le répertoire de celui-ci, un fichier python que nous appellerons par défaut setup.py. Celui-ci doit contenir le code suivant. Si vous souhaitez personnaliser l’exécutable, il vous suffit de modifier les paramètres de l’exécutable ou d’en rajouter selon vos préférences.

from cx_Freeze import setup, Executableimport os.path# Permet d'éviter une erreur de type "KeyError: TCL_LIBRARY"PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')options = {    'build_exe': {	    'include_files':[		    os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),		    os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),	    ],    },}# Si vous souhaitez pouvoir exporter sur un autre système d'exploitation, ces lignes sont nécessaires.base = Noneif sys.platform == "win32":	base = "Win32GUI"	# Fichier que l'on souhaite inclure dans le dossier de l'exécutable	includefiles = ["yubilogo.ico", "yubilogo.png"]	# Paramètres de l'exécutable	target = Executable(		script = "yubicode.py",		copyright= "Copyright © 2018 YubiGeek.com",		icon = "yubilogo.ico",		base = base	)	setup(		name = "YubiCode",	    version = "0.1",	    description = "",	    options = { "build_exe": { 'include_files': includefiles } },	    executables = [ target ]	)

Dans notre cas, le programme nécessite forcément l’interface graphique pour fonctionner. J’aurais donc pu simplement mettre à la ligne 29 le code suivant :

base = "Win32GUI"

Tout en supprimant par la même occasion la ligne 17 et 18, mais j’ai choisis de la laisser pour le bien du tutoriel. À savoir que cette ligne permet de compiler un programme aussi bien vers Windows que vers Linux ou MacOS, attention cependant, si vous compilez vers ces deux systèmes d’exploitations, l’interface graphique ne sera pas compilé et vous vous retrouverez avec une console uniquement.

Si vous souhaitez directement et seulement avoir la console, et ceux même sur Windows, il vous suffit de mettre None comme valeur à base.

Étape 2 : Compilation du programme

Nous voilà maintenant avec un fichier setup.py contenant les paramètres de notre exécutable. Il est désormais temps pour nous de compiler notre programme. Ouvrez votre terminal (pour ma part Anaconda Prompt, mais cmd marche lui-aussi) et changez le dossier du terminal pour celui contenant votre programme à l’aide de la commande CD :

CD /D "Y:\Multimédia\Bureau\Programmation\YubiGeek Tutoriel"

Une fois le terminal configuré, il ne vous reste plus qu’à entrer la commande suivante pour compiler (enfin !) votre programme :

python setup.py build

Retournez maintenant dans le dossier pour observer le résultat !

Compiler son programme Python avec cx_Freeze

Comme on peut le constater, notre exécutable comporte bel et bien un logo, mit automatiquement par cx_Freeze, et possède dans ses détails les informations que nous avons rentrés au préalable dans le fichier setup.py.

Compiler son programme Python avec cx_Freeze

Pour aller plus loin…

Nous avons vu dans ce tutoriel comment faire pour obtenir un exécutable. Cependant, cx_Freeze ne permet pas seulement d’avoir son programme sous forme d’exécutable. Ainsi, au lieu d’écrire seulement build comme argument lors de la compilation, vous pouvez choisir d’ajouter des paramètres à la compilation, ou d’installer directement le programme sur votre ordinateur (install).

python setup.py bdist_msi

Enfin, il est aussi possible de créer directement un installateur pour votre programme, et ceux grâce aux commandes bdist_msi (Windows), bdist_macet bdist_dmg (sous forme d’application ou d’image disque MacOS) et pour finir avec bdist_rpm (Linux).

Total
0
Shares
1 comment
  1. Salut Louison, merci pour ton article intéressant sur cx-Freeze, quoiqu’un peu ancien! 🙂 . J’ai utilisé ta méthode pour compiler un programme simple sur Python. Effectivement il y a bien un fichier build qui est apparu. Mais malheureusement, je n’ai pas retrouvé mon programme en éxecutable. Je suis sous linux et je soupçonne que cx-Freeze a fonctionné sur Python 2.7.6 au lieu du 3.4.3. Qu’en penses tu? Merci de ta réponse!

Laisser un commentaire
Previous Post
La lumière bleue émise par les écrans et vos yeux (risques et solutions)

La lumière bleue émise par les écrans et vos yeux (risques et solutions)

Next Post
Anker PowerCore 10000 : meilleur chargeur externe 2018 ?

Anker PowerCore 10000 : meilleur chargeur externe 2018 ?

Related Posts