fbpx
Développement

Compiler son programme Python avec cx_Freeze

cx_Freeze - Image Principale
Publié par Louison Lesage
Like
Like Love Haha Wow Sad Angry
1
Compiler son programme Python avec cx_Freeze
5 (100%) 1 vote

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 l'exécutablePour 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 !

Like
Like Love Haha Wow Sad Angry
1

A propos de l'auteur

Louison Lesage

Moi c'est Louison, j'ai 16 ans, et j'aime apprendre. En y repensant, j'aime tout, ça peut paraitre étrange, mais j'aime aussi bien la programmation que la littérature ou encore que l'espace. Bref, j'écris sur ce blog pour vous apprendre des choses et vous transmettre mes passions ;)

1 commentaire

Écrire un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.