py2exe

le module py2exe permet de créer, sous Windows, des executables au format .exe. Très utile pour permettre à l’utilisateur d’executer votre programme même s’il ne posède pas d’interpreteur Python installé sur sa machine.

Utilisation de Py2exe

Cet article à été initialement posté sur mon blog consacré à Python, (Essentiellement ses modules externes) consultable à l’adresse http:\www.jbjweb.com/python La première chose à faire est bien entendu de télécharger le module sur le site http:\www.py2exe.org et de l’installer sur votre ordinateur. Prenez soin de prendre la version correspondante à votre version de Python. Nous allons construire un executable ensemble pour vérifier que tout fonctionne:

Fichier “test.py”:

print "Voici un fichier executable py2exe"
raw_input()

Enregistrez le fichier dans le répertoire ou est installé Python (par exemple “C:Python24”) Nous avons maintenant besoin de créer un fichier appellé setup.py, qui permettra la compilation: Fichier “setup.py”:

from distutils.core import setup
import py2exe

setup(console=["test.py"])

Enregistrez ce script dans le répertoire ou est installé Python (par “C:Python24”) Notez que dans le cas ou vous souhaiteriez compiler un programme muni d’une interface graphique (Tkinter, Gtk, etc) il vous faudra remplacer la ligne

setup(console=["test.py"])

par:

setup(windows=["test.py"])

Une fois que ce fichier est enregistré, ouvrez l’invite de commandes (Démarrer, Executer, cmd) et déplacez vous à l’aide de la commande “cd” jusqu’au dossier ou vous fichiers sont enregistrés.(Dans notre exemple, “C:Python24”) Une fois dans le dossier, saisissez:

python.exe setup.py py2exe

Un nombre assez conséquent d’informations relative à la compilation seront affichés sur la console. Patientez. A l’issu de la compilation, si tout s’est bien passé, deux répertoires auront été crées dans le dossier “c:Python24”: dist et build. Le dossier “build” ne sers que lors de la construction de l’executable, vous pouvez le supprimmer. Le dossier “dist”, quand à lui, contient votre executable ainsi que les fichiers requis pour son fonctionnement.

Quelques exemples:

Joindre une icone pour votre programme

from distutils.core import setup
import py2exe

setup(name="nomDuProgramme",
      version="1.0",
      description="Description du programme",
      author="Vous",
      windows = [
        {
            "script": "programme.py",
            "icon_resources": [(1, "votreIcone.ico")]
        }
    ],)

Compiler un programme utilisant le module PIL

Lorsque j’ai voulu compiler un programme utilisant le module PIL, je me suis heurté à de nombreuses erreurs. En fouillant un peu, j’ai pu trouver une solution:

from distutils.core import setup
import py2exe
import Image
import JpegImagePlugin
Image._initialized=2

setup(name="nomDuProgramme",
      version="1.0",
      description="Description du programme",
      author="Vous",
      windows = [
        {
            "script": "programme.py",
            "icon_resources": [(1, "icone.ico")]
        }
    ],)

Compiler un programme comportant un exe console + icone

from distutils.core import setup
import py2exe
import fao

setup(name="pysync",
      version="0.2",
      description="synchronisation between src and dst",
      author="Frederic Aoustin",
      console = [
        {
            "script": "pysync.py",
            "icon_resources": [(1, "img/ico.ico")]
        }
    ],)

Compiler un gui et un exe console

from distutils.core import setup
import py2exe
import fao
import fao.colorconsole
import fao.ftk

setup(name="pysync",
      version="0.4",
      description="synchronisation between src and dst",
      author="Frederic Aoustin",
      console = [
        {
            "script": "pysync.py",
            "icon_resources": [(1, "img/ico.ico")]
        }],
      windows = [
        {
            "script": "gui.py",
            "icon_resources": [(1, "img/ico.ico")]
        }

    ],)

Note

Il faut noter qu’il faut pour créer un installateur avec ces fichiers compilés utiliser un outil externe comme innosetup (par exemple)

Attention

py2exe n’est pas compatible python 3 !!!