[Python] le .exe généré ne marche pas
Résolu/Fermé
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
-
5 janv. 2008 à 18:38
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 23 mars 2008 à 21:51
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 23 mars 2008 à 21:51
A voir également:
- Py.exe
- Svchost exe - Guide
- .Exe - Télécharger - Divers Utilitaires
- Citizen code python avis - Accueil - Outils
- Frst64.exe - Télécharger - Sécurité
- Bat to exe converter - Télécharger - Édition & Programmation
13 réponses
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
6 janv. 2008 à 12:30
6 janv. 2008 à 12:30
petit Up !
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
7 janv. 2008 à 09:09
7 janv. 2008 à 09:09
Essai en le renommant en .py pour avoir la console.
Comme ça tu verra les erreurs éventuelles dans la console.
Comme ça tu verra les erreurs éventuelles dans la console.
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
7 janv. 2008 à 19:42
7 janv. 2008 à 19:42
Merci pour m'avoir répondu !
J'ai donc renommé mon script principal en .py, et modifié en conséquence le setup.py, mais rien à faire. Aucune erreur ne s'affiche, et quand j'essaye de mettre un "print" dans la fonction qui est appelé lors de l'appui d'une touche du clavier (avec pyhook), il ne marche pas après avoir été converti en .exe ! En revanche, si je le place ne dehors de cette fonction, le print marche très bien..
je met le squelette de mon script .py :
import pyHook, pythoncom
def OnKeyboardEvent(event):
cle = str(event.Key)
if cle == "touche1":
...etc... que des instructions conditionnelles similaires
#test de print ici => ne marche pas dans le .exe mais fonctionne dans le .py
hk = pyHook.HookManager()
hk.KeyDown = OnKeyboardEvent
hk.HookKeyboard()
#print 'test' marche dans le script .py et dans le .exe
pythoncom.PumpMessages()
NB : Dans le setup.py j'ai aussi essayé de changer windows en console pour les différents cas... Ca ne marche pas.
J'ai donc renommé mon script principal en .py, et modifié en conséquence le setup.py, mais rien à faire. Aucune erreur ne s'affiche, et quand j'essaye de mettre un "print" dans la fonction qui est appelé lors de l'appui d'une touche du clavier (avec pyhook), il ne marche pas après avoir été converti en .exe ! En revanche, si je le place ne dehors de cette fonction, le print marche très bien..
je met le squelette de mon script .py :
import pyHook, pythoncom
def OnKeyboardEvent(event):
cle = str(event.Key)
if cle == "touche1":
...etc... que des instructions conditionnelles similaires
#test de print ici => ne marche pas dans le .exe mais fonctionne dans le .py
hk = pyHook.HookManager()
hk.KeyDown = OnKeyboardEvent
hk.HookKeyboard()
#print 'test' marche dans le script .py et dans le .exe
pythoncom.PumpMessages()
NB : Dans le setup.py j'ai aussi essayé de changer windows en console pour les différents cas... Ca ne marche pas.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
7 janv. 2008 à 21:02
7 janv. 2008 à 21:02
Je pense qu'il y a des particularités quand on bricole avec COM.
As-tu regardé la doc de py2exe pourquoi s'il y avait quelquechose concernant Pythoncom ?
As-tu regardé la doc de py2exe pourquoi s'il y avait quelquechose concernant Pythoncom ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
7 janv. 2008 à 22:08
7 janv. 2008 à 22:08
En fait, j'ai trouvé ça : http://www.py2exe.org/index.cgi/Py2exeAndWin32com?highlight=%28win32%29
Mais le problème, c'est que je ne connais pas trop py2exe. Donc je ne vois pas trop comment faire.
De plus, je crois que dans le lien ci-dessus, lorsque l'on créé le .exe, il est accompagné de plusieurs fichiers alors que j'aimerai ne pas en avoir. C'est pour ça que j'utilise le setup.py ci-dessus.
Sinon j'ai trouvé une multitude d'autres post qui ont des problèmes avec pythoncom lié à py2exe, mais aucun n'obtient le même problème que moi.
Mais le problème, c'est que je ne connais pas trop py2exe. Donc je ne vois pas trop comment faire.
De plus, je crois que dans le lien ci-dessus, lorsque l'on créé le .exe, il est accompagné de plusieurs fichiers alors que j'aimerai ne pas en avoir. C'est pour ça que j'utilise le setup.py ci-dessus.
Sinon j'ai trouvé une multitude d'autres post qui ont des problèmes avec pythoncom lié à py2exe, mais aucun n'obtient le même problème que moi.
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
12 janv. 2008 à 15:01
12 janv. 2008 à 15:01
je remet à jour le sujet ! J'ai effectué quelques tests, et apparemment ce qui fait que mon .exe ne marche pas, c'est l'option "bundle_files": 1
Quand je la retire, je me retrouve avec pas mal de fichier en plus de mon .exe, mais il marche parfaitement... Est ce quelqu'un connait une alternative à py2exe afin que j'arrive à obtenir un seul et unique fichier .exe (sans aucun autre fichier à donner) pour pouvoir distribuer plus simplement mon programme ?
Je ne vois pas d'autres solutions.. Je me demande s'il est possible d'intégrer toutes les librairies directement dans mon script à la place d'utiliser import.. Peut-être que ça pourrait résoudre mon problème.
Quand je la retire, je me retrouve avec pas mal de fichier en plus de mon .exe, mais il marche parfaitement... Est ce quelqu'un connait une alternative à py2exe afin que j'arrive à obtenir un seul et unique fichier .exe (sans aucun autre fichier à donner) pour pouvoir distribuer plus simplement mon programme ?
Je ne vois pas d'autres solutions.. Je me demande s'il est possible d'intégrer toutes les librairies directement dans mon script à la place d'utiliser import.. Peut-être que ça pourrait résoudre mon problème.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
12 janv. 2008 à 22:41
12 janv. 2008 à 22:41
Il y a quelques temps j'avais fait le tour des solutions disponibles:
https://sebsauvage.net/python/snyppets/index.html#py2exe
Certains vont même jusqu'à NSIS, mais bon.
https://sebsauvage.net/python/snyppets/index.html#py2exe
Certains vont même jusqu'à NSIS, mais bon.
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
22 mars 2008 à 18:14
22 mars 2008 à 18:14
Bonjour,
désolé je n'avais pas vu la réponse au message ! ^^
Le problème avec NSIS, c'est que ça créé des "installeurs". Je voudrais vraiment avoir un .exe seul. Si j'exécute un .exe créé par NSIS, ça m'affiche une sorte de fenêtre d'installation en exécutant le script .nsi. En revanche, s'il y a un moyen pour créer un .exe qui s'exécute normalement sans afficher de grosse fenêtre... ^^ je suis preneur ! j'aimerai bien que seul mon code python soit exécuté :S
Personne ne voit de solution ?
PS : j'ai testé la page que tu m'as envoyé sur py2exe, mais ça ne marche pas non plus :( C'est vraiment dommage, ça me ferait mal de devoir reprogrammer mon script python en C pour ne pas être confronter à ce problème... :(
Bonne journée à tous et encore désolé pour le temps de réponse ! ^^
désolé je n'avais pas vu la réponse au message ! ^^
Le problème avec NSIS, c'est que ça créé des "installeurs". Je voudrais vraiment avoir un .exe seul. Si j'exécute un .exe créé par NSIS, ça m'affiche une sorte de fenêtre d'installation en exécutant le script .nsi. En revanche, s'il y a un moyen pour créer un .exe qui s'exécute normalement sans afficher de grosse fenêtre... ^^ je suis preneur ! j'aimerai bien que seul mon code python soit exécuté :S
Personne ne voit de solution ?
PS : j'ai testé la page que tu m'as envoyé sur py2exe, mais ça ne marche pas non plus :( C'est vraiment dommage, ça me ferait mal de devoir reprogrammer mon script python en C pour ne pas être confronter à ce problème... :(
Bonne journée à tous et encore désolé pour le temps de réponse ! ^^
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
22 mars 2008 à 20:11
22 mars 2008 à 20:11
NSIS peut être configuré pour ne rien afficher: il décompacte tout dans un répertoire temporaire, exécute le programme, et efface automatiquement les fichiers à la fin du programme.
Ça peut donc très bien remplir le rôle.
Ça peut donc très bien remplir le rôle.
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
22 mars 2008 à 20:25
22 mars 2008 à 20:25
aaaah !!! merci beaucoup ^^ je vais regarder tous les tutoriaux alors ;) je n'avais suivi que le premier !
Je met comme résolu, merci encore et bonne soirée !
Je met comme résolu, merci encore et bonne soirée !
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 mars 2008 à 00:51
23 mars 2008 à 00:51
py2exe a bien marché chez moi, et aussi cx_freeze.
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
23 mars 2008 à 20:59
23 mars 2008 à 20:59
c'est étrange ! Chez moi, si j'utilise l'option bundle files à 1 (pour n'obtenir qu'un fichier), mon .exe ne fait rien ^^ alors que si je retire l'option... tout marche très bien :/
J'ai utilisé NSIS pour résoudre le problème :)
Merci encore !
J'ai utilisé NSIS pour résoudre le problème :)
Merci encore !
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 mars 2008 à 21:51
23 mars 2008 à 21:51
De rien ! :-)