[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Programmation
> Python
> Apprenons Python ! > Annexes > Créer un exécutable Windows avec py2exe.
> Lecture du tutoriel
Créer un exécutable Windows avec py2exe.
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Le grand moment est arrivé, vous avez terminé votre super programme, et vous voulez montrer à tout vos potes sous Windows à quel point vous êtes un programmeur trop balaise.

Seul problème : soit les gens ne sont pas des programmeurs trop balaises comme vous et n'ont pas Python sur leurs machines, soit ils sont aussi des programmeurs trop balaises mais utilisent un language étrange appellé séplusseplusse et n'ont pas Python sur leurs machines non plus. Ce qui veut dire que sans Python, ils ne pourront pas faire fonctionner ce que vous avez fait.
Comment faire ? Votre programme a beau être génial, vous n'allez quand même pas forcer tout le monde à télécharger et installer votre language préféré et d'éventuelles librairies en plus ?
La solution : Faire une version stand-alone exécutable de votre programme, qui fonctionnera toute seule d'elle même sur tout les PCs. Pour cela nous allons utiliser py2exe, et ce tutorial vous expliquera comment faire.
Dans un premier temps il vous faut télécharger le fichier d'installation de py2exe.
Si vous avez Python 2.4 il se trouve
ici. Si vous en êtes encore à la version 2.3 de Python vous le trouverez
ici.
Mon Dieu, je ne comprends rien à la page même pas en français sur laquelle je suis tombé !
Pas de panique, en fait c'est simple. Ce qu'il y a d'affiché sur la page est une liste de serveurs répartis dans divers pays qui possèdent votre fichier. Choisissez-en un proche de chez vous dans la colonne
"Location", puis cliquez sur le lien
"Download" correspondant en fin de ligne. Vous serez amené sur une nouvelle page où votre téléchargement commencera tout seul après quelques secondes (si votre javascript est activé, dans le cas contraire il vous faudra cliquer manuellement sur le bouton
"click here to start your download" qui sera présent sur la page). Si exceptionnellement le serveur a du mal ou ne contient plus votre fichier choisissez simplement un autre serveur et recommencez.
Si vous êtes sous Windows 95, 98 ou Me vous aurez besoin de mettre une dll unicows.dll dans le même dossier que python.exe (c:/python24 ou c:/python23 par défaut).
Je la met en téléchargement direct
ici , si le lien devient mort un jour vous trouverez ça sans peine avec une recherche Google.
Si vous passez trois ans après que j'ai écrit ce tutorial il est très probable que la version de py2exe dont j'ai donné les liens soit obsolète, et même que la version de Python en cours ne soit plus la 2.4 (la 2.5 est en bêta à l'heure où j'écris ces lignes). N'hésitez donc pas à vérifier
la page principale de py2exe pour vérification (même sans lire l'anglais vous devriez vous en sortir, ce sont les deux liens juste en dessous du gros titre "
Installing py2exe" tout en bas de la page).
Pour l'installation rien de plus simple : lancez l'exécutable téléchargé, puis cliquez trois sur
"Next" et une fois sur
"Finish".
Il faut maintenant préparer les fichiers pour la transformation ultime de leurs vies.
Créez un fichier setup.py et dedans mettez ce code là :
Code : Python1
2
3
4
5
6 | # setup.py
from distutils.core import setup
import py2exe
setup(console=["programme.py"])
# setup(windows=["programme.pyw"])
|
Les deux seules lignes importantes auxquelles vous devrez apporter des modifications sont les deux dernières (les deux premières ne font que des imports nécessaires au bon fonctionnement du script). Il y a deux cas possibles :
- Si vous voulez que la console apparaisse quand l'exécutable sera lancé vous devez laisser le fichier du programme à compiler en extension py et dans setup.py il vous faudra remplacer programme.py par le nom du fichier du programme.
Par exemple, dans le cas d'un jeu en mode console uniquement où on doit deviner un nombre choisi au hasard par l'ordinateur entre 1 et 100 (comme dans le Tp), le fichier du jeu sera enregistré sous le nom jeu.py et les deux dernières lignes de setup.py donneront ceci:
Code : Python1
2 | setup(console=["jeu.py"])
# setup(windows=["programme.pyw"])
|
On dit en fait à py2exe de produire un éxécutable qui laissera apparaitre la console à partir du fichier jeu.py. La dernière ligne est ignorée puisqu'elle est commentée.
- Si par contre vous ne voulez pas que la console apparaisse, vous devez enregistrer le programme en pyw (un fichier pyw lancé sous Windows ne fait pas apparaitre la console contrairement aux fichiers py) et dans setup.py vous devez décommenter la dernière ligne et commenter l'avant-dernière ; il faudra remplacer programme.pyw par le nom de fichier requis.
Par exemple vous avez développé un petit éditeur de texte avec wxPython pour lequel la console est inutile puisque tout ce passe dans une fenêtre wxPython. Le fichier s'appellera alors par exemple editeur.pyw et les deux dernières lignes de setup.py donneront ça :
Code : Python1
2 | #setup(console=["programme.py"])
setup(windows=["editeur.pyw"])
|
La ligne autorisant la console est ignorée puisque commentée, et la dernière dit à py2exe de produire un exécutable qui ne fera pas apparaitre la console à partir du fichier editeur.pyw.
Mettez ensuite le fichier setup.py ainsi que le fichier py ou pyw de votre programme dans le dossier contenant python.exe (c:/python24 ou c:/python23 par défaut). Si jamais il s'y trouve encore des dossiers "build" et "dist" parce que vous avez déjà fait mumuse avec py2exe auparavant enlevez les pour éviter toute interférence.
Une petite remarque avant d'aller plus loin : depuis le début je parle de l'éxécutable tout seul par souci de simplification du texte mais ça ne sera pas le seul fichier à être produit et à devoir être distribué.
Ouvrez une console ms-dos
(sous Windows 98 : en lancant le fichier c:/windows/command.com), ou plus probablement une invite de commandes si vous êtes sous XP
(menu démarrer -> programmes -> accessoires -> invite de commandes), puis rendez-vous dans le dossier python24 (ou python23).
Pour cela utilisez les commandes
cd.. (cd suivi de deux points) pour remonter d'un dossier dans l'arborescence, et
cd suivi du nom du dossier pour se rendre dans un dossier, la commande pour se rendre dans le dossier c:/python24 sera "cd python24" (sans les guillemets).
Une fois dans le dossier voulu, entrez cette commande :
Code : Python
Histoire d'illustrer en image parce qu'après tout on est des windowsiens pas habitués à utiliser des commandes, avant d'appuyer sur entrée pour lancer la commande du dessus vous devez avoir quelque chose dans le genre de ceci :

Une fois la commande lancée une console va apparaitre, des tas de lignes vont défiler, et si tout se passe sans problèmes à la fin vous aurez un dossier "build" qui est apparu et que vous pourrez effacer, et un autre dossier "dist" qui lui contiendra le programme compilé dans lequel se trouve l'exécutable Windows ainsi que les fichiers nécessaires à son fonctionnement.
Pour distribuer votre programme il vous reste éventuellement d'abord à faire ceci :
- Renommez le dossier dist en autre chose, par exemple le nom de votre programme.
- Mettez manuellement dans ce dossier tout les fichiers qui pourraient être nécessaires à son fonctionnement. Par exemple si vous avez fait un jeu pour lequel il y a des musiques, des bitmaps et des sons il faudra bien sûr les rajouter avant de distribuer quoi que ce soit sinon votre programme plantera avec une belle erreur du genre "file not found". Pour ce qui est du chemin à respecter c'est le même que quand vous avez développé votre programme, si tous vos graphismes étaient dans un dossier "graphismes" à côté de votre source alors copiez-collez simplement le dossier graphismes dans l'ancien dossier dist.
- Mettez un readme si vous avez eu le courage d'en écrire un (comment ça ça se voit à cette phrase que je trouve barbant d'écrire des readme ?
).
Une fois tout cela fini compressez ensuite le dossier en format zip grâce à un logiciel de compression du genre
7-zip, puis mettez le sur un ftp quelqconque du web en donnant le lien de téléchargement aux gens concernés. Bien sûr vous pouvez aussi le distribuer par d'autres moyens, par cd, par envoi de fichier sur MSN, etc etc. Les personnes qui recevront votre fichier n'auront qu'à le décompresser et lancer l'exe pour exécuter votre programme. Selon les cas la compression n'est même pas obligatoire d'ailleurs (notamment par cd).
- Il peut y avoir des fichiers qui vous sembleront superflus dans ce qu'a produit py2exe. Par exemple si vous avez utilisé pygame et que vous n'utilisez pas de cd-rom dans votre programme les fichiers concernant les commandes cd-rom peuvent paraitre facultatifs si vous avez fait un gros import pygame... Néanmoins je vous conseille de faire le tri uniquement si vous savez ce que vous faites, moi je n'ai jamais essayé histoire d'être sûr que tout marche sans problème, surtout que les fichiers en question sont en général d'une taille minuscule par rapport aux plus gros qui eux sont nécessaires.
- Si vous utilisez la bibliothèque PIL n'oubliez les imports de plugin de type d'images au début de votre programme sinon il ne marchera plus une fois compilé même s'il a fonctionné correctement durant le développement (défaut que j'ai remarqué en début d'année dernière, ça a peut être été corrigé depuis le temps).
- Il y a plein d'autres blablatages sur la page de py2exe dont je ne parlerais pas puisque je ne m'en suis jamais servi, et que je me vois mal donner un cours sur quelque chose que je ne connais pas. Tout ce que j'ai mis ici m'a toujours suffit pour tout ce que j'ai fait (essentiellement du wxPython et du Pygame, ainsi qu'un peu de PIL), et vous conviendra sûrement aussi pour un long moment.
Et voilà, maintenant vous pouvez prouver à tout le monde à quel point vous êtes un programmeur trop balaise