[Mise à jour le 15/03//17] - Transformer un script Python en exécutable.

Rédigé par monptitnuage - - 14 commentaires

Il y a quelques semaines j'ai mis en place un dépôt pour partager, principalement, des scripts Python réalisés au cours de mes années d'études.

Pour rappel, le langage de programmation Python est surtout destiné pour l'automatisation de tâches quotidiennes, très apprécié par les flemmards comme moi qui préfère juste faire un clic pour exécuter plusieurs tâches. Python s’utilise grâce à un logiciel gratuit offrant un environnement simple et efficace.

Cependant il y a un inconvénient qui peut être gênant suivant l'utilisation que l'on veut faire de son script. En effet, Python est un langage interprété, c'est à dire qu'il ne créer pas un exécutable lorsque vous le lancer dans l'interface de programmation. Comparé au C++ par exemple qui lui compile votre code source pour ensuite créer un .exe
Pourquoi la création d'un exécutable peut être important pour sons script Python ? Eh bien parce que si vous souhaitez utiliser votre script sous un environnement Windows ou MAC, il est obligatoire d'installer le logiciel Python car sans celui-ci votre script ne sera pas comment se lancer. Sous un environnement Linux, pas de soucie car Python est nativement installé.

Dans ce tutoriel je vais donc vous apprendre à transformer un script python (.py) en exécutable (.exe) afin de pouvoir l'utiliser sur un environnement Windows ou Mac sans avoir besoin d'installer le logiciel Python.

Ici j'utiliserai la version 2.7 de Python ainsi que le logiciel cx_Freeze qui servira à transformer le script Python.
Pour l'installation de cx_Freeze et Python vous pouvez aller les fiches de procédures (à partir de la page 31) rédigées lors de mon stage de terminal.

Passons à l'essentiel, pour commencer vous avez besoin de deux choses, un script python (ici je vais reprendre mon script "PingS.py" disponible sur le dépôt) et un script de transformation "setup.py" disponible également sur le dépôt. En premier lieu, vous devez placer dans le dossier de Python27 à la racine de C:\ vos deux scripts python :



Maintenant ouvrez un invite de commande et taper la commande "cd C:\Python27\Scripts" et une fois au bon endroit lancez la commande "setup.py build" :



Si vous retournez dans le dossier Python27 vous pouvez voir un dossier nommé "build" et à l'intérieur un sous dossier qui contient ensuite votre exécutable "pings.exe" :



Vous pouvez désormais donner votre pings.exe à qui vous voulez afin qu'il puisse l'exécuter dans un environnement Windows sans avoir besoin d'installer le logiciel Python !

  • MAJ du 15/03/17.
Un lecteur de cet article m'a informé qu'il avait un soucie pour transformer son script python en exécutable, j'ai donc refais le test de mon coté et effectivement j'ai eu le droit à une petite surprise.
De mon côté, j'utilise la version 3.4.4 de Python et la version 5.0.1 de cxFreeze pour Python 3.4. Je n'ai eu aucuns soucie pour transformer le script Python puis je me suis dis qu'il faudrait peut être vérifier ce que ça donne avec les nouvelles versions de Python étant donné que mon article date un peu.
C'est ainsi que j'ai découvert que la transformation d'un script Python ne fonctionne plus avec une version supérieur à Python 3.4.4.
J'ai vérifié si le problème venait peut être de mon setup.py qui n'est plus compatible avec les nouvelles versions mais apparement ce n'est pas le cas. Je n'ai pas approfondi plus que ça mais je peux vous dire déjà que la transformation ne fonctionne pas avec Python 3.5.0 et cxfreeze pour la version python 3.5.0 et pire encore, j'ai ensuite testé avec python 3.5.3 mais là cxfreeze refuse carrément de s'installer car ne trouve pas de Python installé sur le poste. Et pour finir, Python 3.6 avec cxfreeze pour python 3.6 ne fonctionne pas non plus.

Si de votre côté vous avez déjà la solution à ce problème, n'hésitez pas à le dire en commentaire pour informer tous le monde.

Enoy ;)

Technicien helpdesk
Webmasteur et rédacteur du blog monptitnuage
Vous pouvez me suivre sur Twitter : @monptitnuage

14 commentaires

#1  - ely cheikh SMAIL a dit :

ce tuto m'a aide a transformer un script python (test) en exécutable et ça fonctionne.

Répondre
#2  - David a dit :

Content que ça ai pu t'aider ;)

Répondre
#3  - Garage Door Repair a dit :

Awesome blog! Is your theme custom made or did you download it from somewhere?
A theme like yours with a few simple adjustements would really make
my blog jump out. Please let me know where you got your design. Thank you

Répondre
#4  - David a dit :

Thanks for your comment ;)
I use the theme by default of PLUXML and I brought my own modifications then.
PLUXML is opensource, so we can modified all.

Répondre
#5  - Garage Door Repair a dit :

I know this if off topic but I'm looking into starting my
own blog and was curious what all is required to get setup?

I'm assuming having a blog like yours would cost a pretty penny?
I'm not very internet savvy so I'm not 100% sure.
Any recommendations or advice would be greatly appreciated.
Kudos

Répondre
#6  - David a dit :

The production of my site did not cost me anything because I use an opensource CMS, therefore free. I advise you to go see my comparison.
For my part, I learn as I go, I improve by following the advice I find on the internet (referencing, writing, etc ...)

Répondre
#7  - Ancor17 a dit :

Malgré de très bonnes explications, je trouve ça assez compliqué pour les gens qui commence dans python, comme moi.
N'y aurais t il pas une méthode vraiment plus simple ?
Merci d'avance

Répondre
#8  - David a dit :

Il existe sans doute d'autres méthodes pour le faire mais je ne suis pas renseigné là dessus. Dis moi ce que tu trouve de compliqué dans mon tutoriel, j'essaierai d'approfondir mon explication dans ce cas.

Répondre
#9  - sylvain a dit :

Salut, tu a dit dans ton article q'on pouvait ensuite exécuter le script su mac mais les mac ne peuvent pas exécuter de fichier .exe !? Saurait tu comment le transformer en fichier .app ou .dmg ?

Répondre
#10  - David a dit :

Effectivement un .exe ne peut pas s'exécuter sur un environnement mac nativement, mais à l'époque j'avais le logiciel Wine sur mon mac de test. Wine permet d'exécuter des fichier .exe.

Autrement je ne sais pas comment transformer un .exe en .app ou .dmg

Répondre
#11  - Stéphane a dit :

Bonjour, suite à la lecture de votre billet, je voulais créer un .exe à partir de mon petit programme :
http://steteil2.free.fr/an2016/python/carre3.py
mais la compilation plante sans que je comprenne pourquoi. Une idée ?

Répondre
#12  - David a dit :

Je vais tester ton script et je te dirais ce que ça donne pour moi.
Par contre sur quel environnement essai tu de le transformer ? Quelle version de cxfreeze utilise-tu ? As tu un message d'erreur lors de l'échec ?

Répondre
#13  - guillaume_lftt a dit :

Bonjour,

Quand je lance "setup.py build" dans l'invité de commande, rien ne se passe...
A quoi cela peut-il être dû ?

Répondre
#14  - monptitnuage a dit :

As tu pensais à lire le pavet MAJ du 15/03/17 en bas de l'article ?

Un lecteur de cet article m'a informé qu'il avait un soucie pour transformer son script python en exécutable, j'ai donc refais le test de mon coté et effectivement j'ai eu le droit à une petite surprise.
C'est ainsi que j'ai découvert que la transformation d'un script Python ne fonctionne plus avec une version supérieur à Python 3.4.4.

Répondre

Fil RSS des commentaires de cet article

Écrire un commentaire

Quelle est la dernière lettre du mot yytp ?