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.

cx_Freeze - Programme exemple
Ce programme, en plus du fichier .py, nécessite un .ico et un .png pour fonctionner.

É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 (liste des paramètres ici)

from cx_Freeze import setup, Executable 
import 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 = None 
if 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 ! cx_Freeze - Programme compilé !

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.

cx_Freeze - Propriétées de lPour 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 (liste des paramètres ici) 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).

Un problème avec votre compilation ? N’hésitez pas à commenter, nous vous aiderons à le résoudre !

Compiler son programme Python avec cx_Freeze
4.5 (90%) 2 votes
1 commentaire
Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscrivez vous à notre newsletter

Soyez informé des derniers articles sur YubiGeek. Saisissez votre adresse email et validez le formulaire. Un email de confirmation vous sera communiqué.

Vous devriez également aimer

Tout savoir sur les CMS

« Système de Gestion de Contenu » traduit de l’anglais « Content Management System » est le…

Chatbot : créer une Intelligence Artificielle sur les réseaux sociaux

Un Chatbot, ou “agent conversationnel” est un agent qui dialogue avec un…

Facebook API : comment obtenir un jeton d’accès qui n’expire pas

Si vous êtes développeur, et que vous utilisez l’API de Facebook, vous…

Couleurs des réseaux sociaux

Il arrive parfois que vous cherchiez les couleurs de votre réseau social…