Créer un exécutable sous Windows à partir d’un programme Python

Créer un exécutable sous Windows à partir d’un programme Python

Si vous êtes comme moi, vous êtes sûrement frustrés d’avoir créé un beau programme Python et de ne pas l’avoir en exécutable sous Windows.

Dans cet article, je vais vous montrer comment transformer votre fichier .py en fichier .exe.

Installation du module cx_Freeze

Allez en ligne de commande. Pour cela, allez dans la recherche Windows et tapez “cmd”.

Ensuite, tapez la commande suivante :

python -m pip install cx_Freeze --upgrade

Si tout se passe bien, un message positif apparaîtra. Sinon… ben dommage ! 🙂

Création d’un programme Python

Je vais partir d’un programme que j’avais déjà exposé, celui d’un chiffrement/déchiffrement affine, en l’améliorant un peu :

 alphabet=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',"'","ù","é","è","à","ç","-","ê"," "]

# Calcul du pgcd de a et b

def pgcd(a,b):
    while b!=0:
        a,b=b,a%b
    return a

# fonction de chiffrement affine

def chiffrementAffine(a,b,L):
        x=alphabet.index(L)
        y=(a*x+b)%len(alphabet)
        return alphabet[y]

# Calcul de l'inverse d'un nombre modulo 26

def inverse(a):
        x=0
        while (a*x%len(alphabet)!=1):
                x=x+1
        return x

# Fonction de déchiffrement

def dechiffrementAffine(a,b,L):
    x=alphabet.index(L)
    y=(inverse(a)*(x-b))%len(alphabet)
    return alphabet[y]
                

# Affichage du mot chiffré

def crypt(M,a,b):
    if (pgcd(a,len(alphabet))==1):
        mot = [chiffrementAffine(a,b,i) for i in M]
        return "".join(mot)
    else:
        return "Chiffrement impossible. Veuillez choisir un nombre a premier avec"+str(len(alphabet))+"."

# Affichage du mot déchiffré

def decrypt(M,a,b):
    if (pgcd(a,len(alphabet))==1):
        mot = [dechiffrementAffine(a,b,i) for i in M]
        return "".join(mot)
    else:
        return "Déchiffrement impossible. Le nombre a n'est pas premier avec"+str(len(alphabet))+"."

# Menu

def menu():
    print('Menu du jour...\n----------------')
    print('1. Chiffrer un message')
    print('2. Déchiffrer un message\n-----------------------\n')
    choix = int(input('Quel est votre choix ? '))
    if choix == 1:
        chiffrer()
    elif choix == 2:
        dechiffrer()
    else:
        print('Can you be serious please... ?\n')
        menu()

# Retour au menu ?

def return_menu():
    rep = input('\nSouhaitez-vous revenir au menu (O/N) ? ')
    if rep.upper() == 'N':
        the_end()
    elif rep.upper() == 'O':
        menu()
    else:
        print('Can you be serious please... ?\n')
        return_menu()
# the_end()

def the_end():
    print("Ok. C'est vous qui voyez... See you soon !")
    
# chiffrer

def chiffrer():
    msg = input('Entrez le message à chiffrer : ')
    a = int(input('Entrez la première clé : '))
    b = int(input('Entrez la seconde clé : '))
    print('Le chiffrement donne : ',crypt(msg,a,b))
    return_menu()

def dechiffrer():
    msg = input('Entrez le message à déchiffrer : ')
    a = int(input('Entrez la première clé : '))
    b = int(input('Entrez la seconde clé : '))
    print('Le chiffrement donne : ',decrypt(msg,a,b))
    return_menu()

menu()

Ce programme, je vais le sauvegarder sous le nom chiffrement.py.

Création d’un programme de transformation

Je vais créer maintenant un autre programme Python:

from cx_Freeze import setup, Executable

setup(
    name = "ChiffrementAffine",
    version = "0.1",
    description = "Chiffre et déchiffre un message",
    executables = [Executable("chiffrement.py")]
)

Je vais sauvegarder ce programme sous le nom setup.py dans le même répertoire que chiffrement.py.

Construction de l’exécutable

En ligne de commande, je vais dans le répertoire où se trouvent mes deux fichiers Python, puis je tape :

python setup.py build

Cela peut prendre quelques secondes si c’est la première fois que vous entrez cette ligne de commande. À la fin, on doit obtenir un écran comme celui-ci:

Capture d’écran : terminal Windows

Dans le répertoire où se trouvent les fichiers Python, un répertoire nommé build s’est créé, dans lequel se trouve un répertoire dont le nom ressemble à exe.win32-3.6 , dans lequel se trouve le fichier exécutable, ainsi que plein de fichiers dll.

Et voilà ! Votre fichier exécutable est prêt !

Pour les abonné.e.s de ce site, je mets le ZIP correspondant sur cette page.

Stéphane Pasquet
Stéphane Pasquet

Laissez votre message