Créez des executables pour vos scripts python
Posté par jbj le 10 sept 2007 dans Python • 8 commentairespyInstaller est un outil permettant d'empaqueter un script python dans un exécutable. A la différence du célèbre py2exe, il est multi-plateforme et permet d'empaqueter tous les fichiers necessaires au fonctionnement dans un seul fichier binaire. Pratique pour distribuer un programme sans se soucier des modules disponibles sur le poste des utilisateurs...
Notez qu'il ne s'agit pas de la transformation d'un script python en un vrai executable. L'empaquetage n'améliorera aucunement la vitesse d'execution du script. Il s'agit simplement de regrouper script, modules et une "mini-version" de l'interpreteur python dans un seul fichier, permettant ainsi à n'importe qui d'executer votre script, même si python n'est pas installé sur votre système.
Téléchargez l'archive sur http://www.pyinstaller.org/ et décompressez là sur votre machine.
Sous Linux, assurez vous d'avoir installé les paquets python-dev et zlib1g-dev.
Executez Configure.py et déplacez-vous dans source/linux. Ensuite, executez Make.py puis la commande make.Si tout s'est bien déroulé, les bootloaders (run et run_d) auront été créés dans support/loader.
Sous windows, vous n'avez qu'à télécharger et décompresser l'archive.
Pour la suite du tuto, je considèrerais pyinstaller installé dans le répertoire /home/pyinstaller.
Choisissez un script Python qui sera votre premier script compilé avec Pyinstaller. Pour plus de confort, déplacez le dans le dossier racine de pyinstaller. Pour cet exemple, notre script à compiler s'appellera script.py
Ouvrez une console. Déplacez vous jusqu'au répertoire de pyinstaller. dans le cadre de notre exemple, cela donne: /home/pyinstaller/pyinstaller-1.3 puis Executez le script de configuration en tapant Configure.py .Vous devriez voir apparaitre ce genre de messages à l'écran:
C:pyinpyinstaller-1.3>Configure.pyI: computing EXE_dependenciesW: Cannot determine your Windows or System directoriesW: Please add them to your PATH if .dlls are not found W: or install starship.python.net/skippy/win32/Downloads.html I: Finding TCL/TK... I: found TCL/TK version 8.4 I: testing for Zlib... I: ... Zlib available I: Testing for ability to set icons, version resources... I: ... resource update unavailable - No module named win32api I: Testing for Unicode support... I: ... Unicode available I: testing for UPX... I: ...UPX unavailable I: computing PYZ dependencies...
Nous allons maintenant créer le fichier spec grace au script Makespec.py.
Makespec.py accepte de nombreuses options pour la création de votre fichier exe. Les voici:
| -h, --help | Affiche l'aide |
| -F, --onefile | Créer un seul fichier executable |
| -D, --onedir | Créer l'executable sous forme d'un répertoire de plusieurs fichiers (défaut) |
| -w, --windowed, --noconsole | Ne pas afficher la console lors de l'execution (Windows uniquement) |
| -c, --nowindowed, --console | Afficher la console à l'execution (Windows uniquement) |
| -a, --ascii | N'inclus PAS l'encodage unicode (Par défaut, inclus si disponible) |
| -d, --debug | Mode verbeux. |
| -s, --strip | Supprime le fichier exe et les libs partagées. Ne pas essayer sous Windows |
| -X, --upx | Utilise UPX si disponible. |
| -K, --tk | Inclus TCL/TK. |
| -o DIR, --out=DIR | Génère le fichier spec dans le répertoire spécifié. |
| -n NAME, --name=NAME | Nom du projet. Par défaut, le nom utilisé sera celui du script. |
| -p DIR, --paths=DIR | Définit le répertoire pour les imports (Il est possible de spécifier plusieurs répertoires en les séparant d'un point virgule ";". |
| -v FILE, --version=FILE | Ajoute un fichier de ressource version à l'éxecutable. |
| --icon=FILE.ICO or FILE.EXE,ID | Ajoute l'icone (.ico uniquement) spécifiée au projet. Vous devez avoir installé pywin32 pour utiliser cette option. |
Pour compiler script.py en un seul fichier executable:
Makespec.py -F "script.py"
La console renverra le message suivant, vous indiquant ou se trouve votre fichier spec:
wrote pyinpyinstaller-1.3scriptscript.specnow run Build.py to build the executable
Il ne reste plus qu'a executer la commande Build.py pour construire l'executable:
Build.py "script/script.spec"
Si tout s'est bien passé, vous trouverez un répertoire pourtant le nom de votre script (donc, dans le cadre de ce exemple, le répertoire s'appelle script), votre fichier executable est dedans.
Vous pouvez désormais distribuer l'executable, il sera fonctionnel même si l'utilisateur final n'a pas installé Python ou un de ses modules externes.
Si vous avez eu des erreurs lors de compilation, ou si votre executable ne fonctionne pas, vous pouvez consulter le fichier warn.txt qui donne des informations sur les problemes qu'a pu rencontrer pyinstaller lors de la compilation.







bonjour,
je travail sous windos avec IDLE. lorsque je fait Makespec.py -F « monFichier.py » IDLE me renvoie un message d’erreur en surlignant en rouge le dernier caractère ( le « ) en me disant SyntaxError.invalid syntax
que faut il faire ??? merci
Salut;
ça fait un bout que je n’ai pas fait de python/pyinstaller sous win, mais je me souviens que ça marchais nikel…Pour ton problème, à vue de nez je dirais de tester sans les guillemets. Si ça marche pas je regarderais plus en détails, tiens moi au courant
ça marche pas. là c’est caremment tout le nom du fichier à convertir qu’il surligne :s
Et si tu utilise la console au lieu d’IDLE? Tu es sur d’etre dans le bon répertoire? Parce que honnetement là, je ne vois pas trop ce qui cloche…
non, pas beaucoup plus
j’vais tenter de remuer un maximum la communotée python pour trouver la solution à mon problème. merci quand meme.
J’ai testé sous windows, voilà ce que ça me donne:
D:\Python24\pyinstaller_1.3\pyinstaller-1.3>Makespec.py -F « salaire.py »
wrote D:\Python24\pyinstaller_1.3\pyinstaller-1.3\salaire\salaire.spec
now run Build.py to build the executable
D:\Python24\pyinstaller_1.3\pyinstaller-1.3>Build.py « salaire/salaire.spec »
checking Analysis
building Analysis because out0.toc non existent
running Analysis out0.toc
Analyzing: D:\Python24\pyinstaller_1.3\pyinstaller-1.3\support\_mountzlib.py
Analyzing: D:\Python24\pyinstaller_1.3\pyinstaller-1.3\support\useUnicode.py
Analyzing: salaire.py
Warnings written to salaire\warnsalaire.txt
checking PYZ
rebuilding out1.toc because out1.pyz is missing
building PYZ out1.toc
checking PKG
rebuilding out3.toc because out3.pkg is missing
building PKG out3.pkg
checking ELFEXE
rebuilding out2.toc because salaire.exe missing
building ELFEXE out2.toc
D:\Python24\pyinstaller_1.3\pyinstaller-1.3>
L’executable crée par pyinstaller est parfaitement fonctionnel. Peut etre que ça t’aidera
Au pire, envoie moi ton script par mail et je verrais si il compile chez moi.
1.Installer « python-2.5.1.msi » si vous ne l’avez pas encore fait
et « py2exe-0.6.6.win32-py2.5.exe » dans l’ordre.
2.Mettre « Py2Exe.exe »
dans le répertoire d’installation de Python25
« C:\Python25″
3.générer un fichier « setup.py » avec « SetupPyGenerate.exe »
il vous demanderas un nom de fichier *.py donc
indiquer le nom du fichier que vous voulez compiler
dans le fichier « setup.py »:
[code]
from distutils.core import setup
import py2exe
setup(console=["Nom Du Script A Compiler.py"])
[/code]
4.Mettre « Py2Exe.exe », « setup.py » & votre Script a Compiler
dans le répertoire d’installation de Python25
« C:\Python25″
5.Executer « Py2Exe.exe » une fois le processus terminer
une fenetre s’ouvre a l’endroit ou votre Executable
à été créer
Ps:Je vous est mis toute mes sources Delphi, Dev-Cpp, Batch.
[url=http://coding.xooit.org/t26-Compiler-un-script-Python-en-Executable.htm]download src+bin[/url]
je vous dis @++
by Craft
Bonjour,
Si je vais ce qui est indiqué ci-dessus avec le célèbre script « Bonjour Monde », je ne parviens pas à exécuter le programme sur un PC où Python n’est pas installé;
Seul une fenêtre DOS s’ouvre et se referme.
Quelqu’un peut-il m’aider?