Rechercher : dans
Par :

[Python] le .exe généré ne marche pas

Dernière réponse le 23 mar 2008 à 21:51:02 darkneurone, le 5 jan 2008 à 18:38:12 
 Signaler ce message aux modérateurs

Bonjour à tous,

j'essaye d'obtenir un .exe de mon script python à l'aide de py2exe. Tout ce passe bien au niveau de la création du .exe, mais lorsque je l'exécute, mon programme ne marche pas... les modules que j'utilise dans mon script python sont : pyhook et pythoncom.

voilà le code de mon setup.py :

import py2exe
from distutils.core import setup

setup(windows = ["mon_programme.pyw"],
options = {"py2exe": {"optimize": 2,
"bundle_files": 1,
"compressed": 1}},
zipfile = None)


Mon script python s'appelle : mon_programme.pyw

Ce qui est étonnant c'est qu'aucune erreur n'apparait lors de la création du .exe et de son exécution ! le .exe ne fait tout simplement rien.. En revanche, mon_programme.pyw s'exécute sans erreur, et tout marche parfaitement !

NB : dans mon script python, j'ouvre des fichiers .txt, que j'ai créé au préalable avec la fonction open en méthode 'a+', et j'écris dans ceux ci avec la fonction write.

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « [Python] le .exe généré ne marche pas » dans :
Télécharger SWF Maestro EXE VoirBon nombre des jeux en ligne sont au format flash. C’est un format léger adapté au site web. SWF Maestro EXE est le programme idéal pour générer des fichiers Flash. Vous avez la possibilité de créer des jeux de toutes sortent. C’est aussi...
Ctfmon - ctfmon.exe Voirctfmon - ctfmon.exe Le processus ctfmon.exe (dont le nom complet de processus est Alternative User Input Services) est un processus générique de Windows NT/2000/XP servant à gérer les entrées de saisie texte alternatives telles que les logiciels...
Wuauclt - wuauclt.exe Voirwuauclt - wuauclt.exe Le processus wuauclt.exe (wuauclt signifiant Windows Update client for WindowsME) est un processus générique de Windows Millenium servant à mettre à jour Windows Millenium via Internet. Le fichier correspondant à ce...
Svchost - svchost.exe Voirsvchost - svchost.exe Le processus svchost.exe (svchost signifiant Service Host Process) est un processus générique de Windows 2000/XP servant d'hôtes pour les autres processus dont le fonctionnement repose sur des librairies dynamiques (DLLs). Il...

1

darkneurone, le 6 jan 2008 à 12:30:54

Petit Up !

Répondre à darkneurone

2

sebsauvage, le 7 jan 2008 à 09:09:58

Essai en le renommant en .py pour avoir la console.
Comme ça tu verra les erreurs éventuelles dans la console.

Répondre à sebsauvage

3

darkneurone, le 7 jan 2008 à 19:42:29

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.

Répondre à darkneurone

4

sebsauvage, le 7 jan 2008 à 21:02:35

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 ?

Répondre à sebsauvage

5

darkneurone, le 7 jan 2008 à 22:08:03

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.

Répondre à darkneurone

6

darkneurone, le 12 jan 2008 à 15:01:33

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.

Répondre à darkneurone

7

sebsauvage, le 12 jan 2008 à 22:41:07

Il y a quelques temps j'avais fait le tour des solutions disponibles:
http://sebsauvage.net/python/snyppets/index.html#py2exe

Certains vont même jusqu'à NSIS, mais bon.

Répondre à sebsauvage

8

darkneurone, le 22 mar 2008 à 18:14:34

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 ! ^^

Répondre à darkneurone

9

sebsauvage, le 22 mar 2008 à 20:11:57

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.

Répondre à sebsauvage

10

darkneurone, le 22 mar 2008 à 20:25:40

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 !

Répondre à darkneurone

11

sebsauvage, le 23 mar 2008 à 00:51:37

Py2exe a bien marché chez moi, et aussi cx_freeze.

Répondre à sebsauvage

12

darkneurone, le 23 mar 2008 à 20:59:21

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 !

Répondre à darkneurone

13

 sebsauvage, le 23 mar 2008 à 21:51:02

De rien ! :-)

Répondre à sebsauvage
Collection CommentÇaMarche.net