Exécutable à partir d'un fichier python
Résolu[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je pensais faire un exécutable d'un code python pour Windows. Pour pas avoir besoin d'ouvrir pycharm. J'ai trouvé ceci CX FREEZE, j'ai bien installé ce dernier dans l'invite de commande Windows, mais pour le fichier python "setup.py", je ne sais pas où le créer : dans pycharm ou Windows ? Merci de ton aide !
Windows / Firefox 120.0
- Créer un executable python
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
11 réponses
Salut,
Personne ne se moque, les 80 posts ne traitent pas de Python, mais de l'utilisation du terminal, de la navigation dans l'arborescence des répertoires et du nommage des fichiers.
Évite les espaces dans les noms de fichiers ou tu le précises avec les simples guillemets '' :
C:\Users\quent\PycharmProjects\pythonProject\'LES_ ENSEMBLES.py'
Autre astuce :
Ton terminal, peu importe l'OS, gère le glisser/déposer, ce qui permet à partir de ton navigateur de fichier d'obtenir le chemin absolu dans ton terminal.
Bonjour Quentin
Le fichier setup.py est un fichier placé à la racine de ton projet, propre à setuptools, qui permet de générer un paquet python (.whl, .egg) et/ou linux (.rpm, .deb).
De nos jours, on le remplace de plus en plus au profit de poetry bien plus moderne, pratique et élégant (qui lui repose sur le fichier pyproject.toml).
Afin de te faire une idée sur ces différentes technologies, tu peux jeter un œil à cette page et cette page.
Je ne connais pas cx-freeze et je ne sais pas s'il impose d'utiliser setuptools. N'étant pas windowsien, je ne m'intéresse pas vraiment à la génération d'exécutable standalone, mais je sais que les gens utilisent aussi souvent pyinstaller ou py2exe. Quelques exemples d'utilisation ici. Typiquement, si ton script python n'est composé que d'un fichier, tu peux te contenter de :
pyinstaller yourfile.py -F --onefile
Bonne chance
C'est bizarre tout ça, on a l'impression que tu ne comprends pas tout ce qu'on te raconte : sur ton image, on voit un chemin avec py.exe. Donc tu as déjà un exe qui correspond à un fichier py.py ? C'est ça ou pas ?
D'autre part as-tu compris que, de toutes façons, tu n'as pas besoin de créer un .exe ?
Moi, je n'utilise pas Pycharm mais Idle comme IDE, mais tu créés forcément un fichier toto.py (par exemple) dans un répertoire. Et pour l'exécuter, il suffit de double-cliquer sur le fichier dans l'explorateur:
Encore une fois, une .exe, c'est utile si tu veux exécuter ton code sur un PC sur lequel n'est pas installé Python.
- Est-ce que sur ton autre PC, le chemin dont tu parles a un sens ?
- Au pire tu n'utilises pas le script de Phil et tu tapes directement la commande avec les arguments adéquats (cf #1) depuis PowerShell.
- L'avantage de PowerShell (comparé aux commandes ms-dos) fournit l'auto-complétion, c'est-à-dire que quand tu tapes une commande, la touche tabulation permet de compléter l'argument que tu es en train de taper. C'est donc un moyen efficace de taper plus rapidement / facilement et sans erreur le chemin d'un fichier.
Pourquoi as tu copié mon fichier sur l'autre PC ?
Tu n'as pas lu tout ce qu'on t'as raconté depuis le début !
Sur ton PC sur lequel tu as créé ton code Python:
un fichier Python toto.py (par exemple)
mon .bat pour lancer pyinstaller et créer un .exe dans un dossier avec
tous les autres fichiers utiles comme on le voit sur l'image que j'ai postée
le 27/12 à 12h22
Sur l'autre PC:
Tu y copie ce fameux dossier, tu l'ouvre et tu double-clique sur toto.exe
Pas plus, pas moins ...
Salut,
Je conseillerais l'installation et l'utilisation de auto-py-to-exe qui utilise PyInstaller
Il propose une interface graphique basée sue Chrome, qui permet en quelques clics de générer son package exe
Je l'ai testé sur Windows, macOS et Linux sans soucis.
https://pypi.org/project/auto-py-to-exe/
Salut Diablo,
Hou la,Hou la,Hou la !
Ne va pas compliquer encore plus que ça l'est :-) :-) :-)
Si tu as lu toute cette suite de messages, tu as du voir que ça n'est pas
simple
D'autant que Quentin a l'air d'être arrivé au bout:
En regardant l'image postée hier à 19h10, on voit les dossiers
dist, build et le fichier LES_ENSEMBLES.spec créés par pyinstaller
Donc, dans dist, il y a surement un dossier LES_ENSEMBLES qui contient
tous les fichiers utiles dont LES_ENSEMBLES.exe
Attendons sa réponse à ma question ...
Bizarre, bizarre ............
Il faudrait refaire un essai
1_ tu supprimes les dossiers build et dist et aussi le fichier LES_ENSEMBLES.spec
2_ tu ouvres l'invite de commandes Windows
3_ Tu tapes cd chemin\vers\le\dossier\du\py
4_ Tu tapes
chemin\vers\le\dossier_pyinstaller\pyinstaller LES_ENSEMBLES.py
N'oublie pas de virer la copie du .py que tu as mise dans le dossier où
est pyinstaller
Et on voit ce que ça donne ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
Même sans créer d'exécutable, on peut lancer un programme en faisant un double clic sur le fichier .py dans l'explorateur ...
J'utilise pyinstaller pour passer un code à quelqu'un qui n'a pas installé l'environnement Python sur son PC, il lui faut donc un .exe puisqu'il n'a pas l'interpréteur pour exécuter directement un .py
Pour créer un exe, je me suis fait un petit fichier .bat :
echo off set /p py_dir=Repertoire du programme : cd %py_dir% set /p py_file=Nom du programme : "C:\Program Files (x86)\Python\Scripts\pyinstaller" %py_file% -p C:\Phil\Dev\Python\projects\base_lib pause
(Le répertoire à la suite de l'option -p contient des fichiers importés éventuellement dans mon code principal)
Bonjour Quentin
- Voir ici. La commande set /p permet de d'initialiser une variable de manière interactive.
- Quand tu exécutes le script de Phil_1857, il suffit de répondre aux questions ("Repertoire du programme :" et "Nom du programme :") pour initialiser respectivement les variables py_dir et py_file.
- Cependant, ce script peut nécessiter quelques corrections
- le chemin vers pyinstaller.exe, de sorte à ce qu'il soit correct par rapport à ton installation ;
- le(s) chemin(s) derrière l'option -p si ton programme dépend d'imports spécifiques -- si tu n'en as pas, tu peux juste supprimer cette option.
- Le point important, c'est de déterminer quelles options de pyinstaller.exe sont pertinentes dans ton cas. Ensuite, libre à toi d'écrire un script dans l'esprit de celui de Phil_1857 pour te simplifier la vie.
- As-tu toutes tes réponses ? Si oui, peux-tu basculer le sujet en résolu ?
Bonne chance
oui à condition de changer le chemin vers pyinstaller comme l'indique
Mamiemando dans son dernier message
Mais j'espère que tu as bien compris que ton peux exécuter ton code
sans utiliser pyinstaller en double-cliquanr sur le .py dans l'explorateur
echo off
set /p py_dir=C:\Users\quent\PycharmProjects\pythonProject\LES ENSEMBLES :
cd %py_dir%
set /p py_file=PycharmProjects :
"C:\Program Files (x86)\Python\Scripts\pyinstaller" %py_file% -p C:\Users\quent\Dev\Python\projects\base_lib
pause
Il y a une confusion Quentin. Peut-être n'as tu pas bien compris le message #5. Il ne faut pas corriger les lignes set /p : ce qui est écrit derrière est le message de question posé par le script quand tu l'exécutes (c'est ce que tu vois dans les captures d'écran postées par Phil dans #6).
- Ce que tu saisis au clavier en réponse est mémorisé dans la variable. Il est donc normal qu'aucun chemin n'apparaisse.
- Ce que tu as écrit aurait sans doute du sens sans l'option /p, afin d'imposer la valeur des variables py_dir et py_file.
Ensuite, rien ne dit que dans ton cas, tu aies un dossier base_lib. Et rien ne dit que tu as réellement besoin de passer l'option -p. C'est là que Phil range sur son ordinateur certains de ses packages python qu'il aime utiliser, mais rien ne dit que ce soit ton cas. Il est fort probable que dans ton cas, tu n'aies pas besoin de l'option -p. C'est pourquoi je te renvoie à la documentation des options de pyinstaller pour bien comprendre ce quelles font.
Bonne chance
- Parfait, le script semble maintenant correct :-) Dans la fenêtre noire que tu as reportée en capture d'écran, il ne te reste plus qu'à taper à la suite de la première question le dossier dans lequel est localisé ton fichier ".py", entrée, puis suite à la deuxième question, le nom dudit fichier ".py".
- Le truc important, c'est que ce script n'a absolument rien d'obligatoire. Phil te l'a proposé car dans son cas, il le trouve pratique, et il se dit que ce sera peut-être le cas pour toi aussi. Mais fondamentalement, la seule chose qui compte vraiment, c'est invoquer pyinstaller.exe avec les bons paramètres.
Bonne chance
En fait quand je rentre le chemin du dossier où est le fichier .py, ça me répond chemin introuvable.
Le bon chemin, c'est celui-là :
Ce n'est pas le même où est installé Pycharm ! Il faut dire que ce fichier .py a été créé lors de ma première installation de Pycharm, ceci expliquant cela peut être !
Sinon pour moi, c'est plus simple, après avoir installé en cmd pyinstaller, de cliquer sur mon fichier .py qui ainsi, s'ouvre direct !
Oui, c'est bien ça: ça évite d'écrire la commande à la main avec le chemin vers pyinstaller et le chemin vers le fichier + nom du fichier .py
Supprime quand même le -p à la fin.
Hé ben voila: dir te donne la liste des fichiers et dossiers contenus dans
le dossier courant
(ici: C:\WINDOWS\System32 car tu tapes la commande alors que tu es dans
ce dossier)
Tu n'as plus qu'a faire cd chemin_ou_est_situé_le_code_Python
puis faire un dir
tu verras bien si dans la liste qui s'affiche on voit le fichier LES_ENSEMBLES.py
(pourquoi un nom de fichier en majuscules, d'ailleurs ?)
À ce moment là il faut l'écrire comme il faut (en respectant les minuscules et les majuscules). On attend toujours que tu nous copies-colles le résultat de la commande dir (dans le répertoire adéquat) pour voir ce qui cloche. Un truc que tu peux sans doute faire, c'est utiliser power shell au lieu des commandes ms-dos. À l'image d'un terminal sous Linux, il supporte l'auto complétion, c'est-à-dire qu'en utilisant la touche "tabulation", il complète les noms de dossiers/fichiers.
tu es un drôle de comique, toi ! ouvre les yeux
moi je vois un fichier
LES_ ENSEMBLES.py
et pas
LES_ENSEMBLES.py
et dans l'explorateur Windows, ça ne te sautait pas aux yeux ?
et dégage un peu tous ces fichiers .spec inutiles
Et prend aussi une bonne habitude:
mettre des underscores ( _ ) au lieu d'espaces dans les noms de fichiers:
creer_un_pdf.py
Bonsoir.
Tout de même, comment quelqu'un ayant posté plus de 8 000 messages dans un forum informatique, donc ayant porté assistance à autrui dans ce domaine ne sait pas comment se déplacer dans une arborescence de répertoires dans une console dos, ni mettre au bon endroit de cette arborescence les fichiers nécessaires au bon fonctionnement d'un exécutable, ce qui est un peu le ba.ba de l'informatique.
:-/
On ne se moque pas
Par contre, ce qui est certain, c'est que tu ne lis attentivement pas ce qu'on
te répond, pour essayer de comprendre ce qui se passe
Encore une fois:
Enlève moi ces foutus espaces de tes noms de fichiers !!
Renomme
LES_ ENSEMBLE.py
(il y a un espace entre LES_ et ENSEMBLES !! )
en
LES_ENSEMBLES.py
Et ça ira bien mieux
On ne voit pas trop l'intérêt de nommer un fichier
LES + underscore + espace + ENSEMBLES
Quentin n'est visiblement pas familier de l'invite de commande.
Pour résumer et clarifier pour Quentin, dans ce post de Quentin :
On peut voir que :
cd C:\Users\quent\PycharmProjects\pythonProject
fonctionne et permet à quentin de se déplacer dans "C:\Users\quent\PycharmProjects\pythonProject".
et que :
C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller LES_ENSEMBLES.py
lance effectivement pyinstaller qui doit donc bien être dans le répertoire "C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller" mais que son exécution échoue avec une erreur :
1038 INFO: PyInstaller: 6.3.0
1039 INFO: Python: 3.12.0
1064 INFO: Platform: Windows-10-16.0.19645-SPe
1065 INFO: wrote C:\Users\quent\PycharmProjects\pythonProject\LES_ENSEMBLES.spec
Script 'C:\Users\quent\PycharmProjects\pythonProject\LES_ENSEMBLES.py' not found
L'exécution du programme pyinstaller échoue car le répertoire "C:\Users\quent\PycharmProjects\pythonProject\" ne contient pas un fichier "LES_ENSEMBLES.py".
En partant de l'hypothèse que "C:\Users\quent\PycharmProjects\pythonProject\" contient "LES_ ENSEMBLES.py" (avec un espace après le underscore) et non pas "LES_ ENSEMBLES.py", la séquence correcte de commandes, après avoir ouvert l'invite de commande serait :
cd C:\Users\quent\PycharmProjects\pythonProject
C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller "LES_ ENSEMBLES.py"
Si quentin a renommé son fichier "LES_ ENSEMBLES.py" en "LES_ ENSEMBLES.py", sans espace, comme on le sui conseille, la séquence correcte de commandes, après avoir ouvert l'invite de commande serait :
cd C:\Users\quent\PycharmProjects\pythonProject
C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller LES_ENSEMBLES.py
@quentin2121 StatutMembre
tu peux coller du texte dans l'invite de commande (clic droit - coller). Fais le pour éviter les fautes de frappe.
Dans son message :
@Diablo76 StatutMembre
avait proposé l'utilisation d'une interface graphique permettant de faire fonctionner PyInstaller : auto-py-to-exe
Cela est sans doutes plus adéquat pour les personnes non familières de la ligne de commande.
Comme il y a 87 réponses, on peut aussi consulter la doc :
https://www.pyinstaller.org/en/stable/usage.html
PyInstaller analyzes myscript.py and:
In the dist folder you find the bundled app you distribute to your users.
- Writes myscript.spec in the same folder as the script.
- Creates a folder build in the same folder as the script if it does not exist.
- Writes some log files and working files in the build folder.
- Creates a folder dist in the same folder as the script if it does not exist.
- Writes the myscript executable folder in the dist folder.