Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1304 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Py2exe] Problème de compilation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Py2exe] Problème de compilation

n°1827762
Sims57
Heard the trance and dream...
Posté le 16-12-2008 à 00:52:05  profilanswer
 

Hello les devs python c'est encore moi  :D . (J'entend déja "Oh non, encore lui  :pfff: ).
 
Je vient vous poser mon problème: j'ai donc sorti avec Boa constrictor deux codes pyton (l'application et le programme). J'ai créé le code pour py2exe. Tout ce passe bien mais quand je veut lancer mon executable, il ne se passe rien (à part la création d'un fichier log:
 Traceback (most recent call last):
  File "Application.py", line 11, in <module>
NameError: name 'app' is not defined)
 
Je vous met ici les deux codes (des extraits, le second code n'étant pas terminé)
 
l'application

Code :
  1. #!/usr/bin/env python
  2. #Boa:PyApp:main
  3. modules ={'Frame1': [0, '', 'none://finale.py']}
  4. def main():
  5.     pass
  6. if __name__ == '__main__':
  7.     main()
  8.     app.MainLoop()


 
Le programme (final.py)

Code :
  1. import wx
  2. import wx.lib.stattext
  3. from wx.lib.anchors import LayoutAnchors
  4. quantity_var = 0
  5. precision_var = 0
  6. delay_var = 0
  7. cost_var = 0
  8. def create(parent):
  9.     return Frame1(parent)
  10. [wxID_FRAME1, wxID_FRAME1DELAY, wxID_FRAME1PRECISION, wxID_FRAME1QUANTITY,
  11. wxID_FRAME1RADIOBOX1, wxID_FRAME1STATICBITMAP1, wxID_FRAME1STATICBOX1,
  12. wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1STATICTEXT3,
  13. wxID_FRAME1VALIDATION,
  14. ] = [wx.NewId() for _init_ctrls in range(11)]
  15. [wxID_FRAME1MENU2PROPOS] = [wx.NewId() for _init_coll_Informations_Items in range(1)]
  16. class Frame1(wx.Frame):
  17.     def _init_ctrls(self, prnt):
  18.         # generated method, don't edit
  19.         wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
  20.               pos=wx.Point(482, 197), size=wx.Size(535, 431),
  21.               style=wx.DEFAULT_FRAME_STYLE, title='DjiDji 2.0')
  22.         self.SetClientSize(wx.Size(519, 395))
  23.         self.SetAutoLayout(True)
  24.         self.SetToolTipString('Frame1')
  25.         self.Validation = wx.Button(id=wxID_FRAME1VALIDATION, label='Valider',
  26.               name='Validation', parent=self, pos=wx.Point(152, 344),
  27.               size=wx.Size(75, 23), style=0)
  28.         self.Validation.Bind(wx.EVT_BUTTON, self.OnValidationButton,
  29.               id=wxID_FRAME1VALIDATION)
  30.         self.quantity = wx.RadioBox(choices=["elevée", "moyenne", "faible"],
  31.               id=wxID_FRAME1QUANTITY, label='Quantit\xe9', majorDimension=1,
  32.               name='quantity', parent=self, pos=wx.Point(32, 56),
  33.               size=wx.Size(104, 80), style=wx.RA_SPECIFY_COLS)
  34.         quantity_var = self.quantity.GetStringSelection()
  35.        
  36.         self.precision = wx.RadioBox(choices=['élevée', 'moyenne', 'faible'],
  37.               id=wxID_FRAME1PRECISION, label='Pr\xe9cision', majorDimension=1,
  38.               name='precision', parent=self, pos=wx.Point(32, 136),
  39.               size=wx.Size(104, 88), style=wx.RA_SPECIFY_COLS)
  40.         self.precision.SetStringSelection("asd','moul" )
  41.         self.precision.SetToolTipString('radioBox1')
  42.         self.precision.SetHelpText('')
  43.         precision_var = self.precision.GetStringSelection()
  44.        
  45.         self.Delay = wx.RadioBox(choices=['serrés', 'larges'],
  46.               id=wxID_FRAME1DELAY, label='Delais', majorDimension=1,
  47.               name='Delay', parent=self, pos=wx.Point(32, 224),
  48.               size=wx.Size(104, 68), style=wx.RA_SPECIFY_COLS)
  49.         delay_var = self.Delay.GetStringSelection()
  50.        
  51.         self.cost = wx.RadioBox(choices=['serré', 'large'],
  52.               id=wxID_FRAME1RADIOBOX1, label='Budget', majorDimension=1,
  53.               name='radioBox1', parent=self, pos=wx.Point(32, 296),
  54.               size=wx.Size(104, 72), style=wx.RA_SPECIFY_COLS)
  55.         cost_var = self.cost.Getstringselection()
  56.        
  57.         self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.Bitmap(u'D:/programation/Projets/visualmetro_wdr/MyBitmapsFunc_0.png',
  58.               wx.BITMAP_TYPE_PNG), id=wxID_FRAME1STATICBITMAP1,
  59.               name='staticBitmap1', parent=self, pos=wx.Point(144, 72),
  60.               size=wx.Size(128, 104), style=0)
  61.         self.staticBox1 = wx.StaticBox(id=wxID_FRAME1STATICBOX1,
  62.               label='Solution propos\xe9e', name='staticBox1', parent=self,
  63.               pos=wx.Point(280, 248), size=wx.Size(200, 100), style=0)
  64.         self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
  65.               label="Bienvenue dans l'application d'aide \xe0 la d\xe9cision pour les methodes de metrologie",
  66.               name='staticText1', parent=self, pos=wx.Point(16, 24),
  67.               size=wx.Size(472, 16), style=0)
  68.         self.staticText1.SetWindowVariant(wx.WINDOW_VARIANT_LARGE)
  69.         self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
  70.               label="Ici s'afficheras votre solution propos\xe9e",
  71.               name='staticText2', parent=self, pos=wx.Point(288, 264),
  72.               size=wx.Size(184, 80), style=0)
  73.         self.staticText2.SetThemeEnabled(False)
  74.         self.staticText2.SetToolTipString('staticText2')
  75.         self.staticText2.SetWindowVariant(wx.WINDOW_VARIANT_NORMAL)
  76.         self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3,
  77.               label='Cette solution vous est propos\xe9e par Sims57',
  78.               name='staticText3', parent=self, pos=wx.Point(248, 376),
  79.               size=wx.Size(257, 13), style=0)
  80.    
  81. def __init__(self, parent):
  82.         self._init_ctrls(parent)
  83. def OnGenStaticText1SetFocus(self, event):
  84.         event.Skip()
  85. def OnMenu2ProposMenu(self, event):
  86.         event.Skip()
  87. def OnValidationButton(self, event):
  88.     if quantity_var == 1:
  89.         if precision_var == 1:
  90.             if delay_var == 1:
  91.                 if cost_var == 1:
  92.                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" ) 
  93.                 else:
  94.                     self.statictext2.SetLabel("Vous pouvez utiliser une grande table de mesure tridimentionnelle" )   
  95.             else:
  96.                 if cost_var == 1:
  97.                     self.statictext2.SetLabel("Vous pouvez utiliser un projecteur de profil" )
  98.                 else:
  99.                     self.statictext2.SetLabel("Vous pouvez utiliser un projecteur de profil" )
  100.         elif precision_var == 2:
  101.             if delay_var == 1:
  102.                 if cost_var == 1:
  103.                     self.statictext2.SetLabel("Vous pouvez utiliser une table à avance micrométrique" )
  104.                 else:
  105.                     self.statictext2.SetLabel("Vous pouvez utiliser un projecteur de profil" )
  106.             else:
  107.                 if cost_var == 1:
  108.                     self.statictext2.SetLabel("Vous pouvez utiliser un projetteur de profil, un micromètre" )
  109.                 else:
  110.                     self.statictext2.SetLabel("Vous pouvez utiliser un projetteur de profil avec support informatique" )
  111.         elif precision_var == 3:
  112.             if delay_var == 1:
  113.                 if cost_var == 1:
  114.                     self.statictext2.SetLabel("Vous pouvez utiliser un pied d'angle/à coulisse" )
  115.                 else:
  116.                     self.statictext2.SetLabel("Vous pouvez utiliser des cales + micromètre" )
  117.             else:
  118.                 self.statictext2.setLabel("Vous pouvez utiliser des cales + comparateur" )
  119.     elif quantity_var == 2:
  120.         if precision_var == 1:
  121.             if delay_var == 1:
  122.                 if cost_var == 1:
  123.                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" ) 
  124.                 else:
  125.                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )   
  126.             else:
  127.                 if cost_var == 1:
  128.                     self.statictext2.SetLabel("Vous pouvez utiliser un projecteur de profil" )
  129.                 else:
  130.                     self.statictext2.SetLabel("Vous pouvez utiliser un projecteur de profil" )
  131.         elif precision_var == 2:
  132.             if delay_var == 1:
  133.                 if cost_var == 1:
  134.                     self.statictext2.SetLabel("Vous pouvez utiliser une table à avance micrométrique" )
  135.                 else:
  136.                     self.statictext2.SetLabel("Vous pouvez utiliser un projecteur de profil" )
  137.             else:
  138.                 if cost_var == 1:
  139.                     self.statictext2.SetLabel("Vous pouvez utiliser un projetteur de profil, un micromètre" )
  140.                 else:
  141.                     self.statictext2.SetLabel("Vous pouvez utiliser un projetteur de profil avec support informatique" )
  142.         elif precision_var == 3:
  143.             if delay_var == 1:
  144.                 if cost_var == 1:
  145.                     self.statictext2.SetLabel("Vous pouvez utiliser un pied d'angle/à coulisse" )
  146.                 else:
  147.                     self.statictext2.SetLabel("Vous pouvez utiliser des cales + micromètre" )
  148.             else:
  149.                 self.statictext2.setLabel("Vous pouvez utiliser des cales + comparateur" )
  150.             event.Skip()


 
Je suis sûr d'être passé à côté de quelque chose d'évident  :??: . Mais quoi?
Je vous remercie d'avance d'avoir accordé un peu d'attention à mon problème. [:whiskas]


Message édité par Sims57 le 16-12-2008 à 16:51:52

---------------
Une seule DLL vous manque et tout est déréglé...
mood
Publicité
Posté le 16-12-2008 à 00:52:05  profilanswer
 

n°1828045
masklinn
í dag viðrar vel til loftárása
Posté le 16-12-2008 à 16:26:39  profilanswer
 

Dans ton "application" tu as un appel à app.MainLoop()

 

Sauf qu'il n'y a aucun objet "app" dans le script [:spamafote]

 

D'ailleurs je doute très fort que si tu lances ton script python directement il fonctionne, tu auras la même erreur.

 

Accessoirement, c'est vraiment dégueulasse ta série d'if/elif imbriqués [:petrus75]

 

Et le nom du fichier dans ton "script" est différent du nom de fichier de l' "application"


Message édité par masklinn le 16-12-2008 à 16:28:49

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1828093
Sims57
Heard the trance and dream...
Posté le 16-12-2008 à 17:26:48  profilanswer
 

Donc je devrait renommer app.mainloop en frame1.mainloop?
 
Le problème du nom du fichier dans le script et de l'application est corrigé.
J'ai encore le problème disant comme quoi "Frame1" n'est pas définit. Pourtant, Frame1 existe dans le programme en lui-même non?


---------------
Une seule DLL vous manque et tout est déréglé...
n°1828135
masklinn
í dag viðrar vel til loftárása
Posté le 16-12-2008 à 18:28:30  profilanswer
 

Sims57 a écrit :

Donc je devrait renommer app.mainloop en frame1.mainloop?


Aucune idée

Sims57 a écrit :


Le problème du nom du fichier dans le script et de l'application est corrigé.
J'ai encore le problème disant comme quoi "Frame1" n'est pas définit. Pourtant, Frame1 existe dans le programme en lui-même non?


T'as songé à apprendre comment python fonctionne [:pingouino dei]
 
Du début, j'veux dire [:pingouino dei]


Message édité par masklinn le 16-12-2008 à 18:28:42

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1828723
gzii
court-circuit
Posté le 17-12-2008 à 18:24:54  profilanswer
 

Code :
  1. #                 if cost_var == 1:
  2. #                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )
  3. #                 else:
  4. #                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )


J'ai mal lu ou bien on fait la même chose dans les deux cas ?

n°1828726
Sims57
Heard the trance and dream...
Posté le 17-12-2008 à 18:43:22  profilanswer
 

gzii a écrit :

Code :
  1. #                 if cost_var == 1:
  2. #                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )
  3. #                 else:
  4. #                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )


J'ai mal lu ou bien on fait la même chose dans les deux cas ?


 
 
Oui, effectivement, on fait la même chose dans les deux cas. J'ai fait le choix d'utiliser les deux versions de la variable pour des raisions de structure de code (si je me relis d'ici 6 mois et que je pense qu'une variable n'a pas été testée par exemple). Le code pourrait surrement être plus léger mais le poids et l'optimisation ne rentrent pas (encore) dans mon cahier des charges. (j'aurais dut commenter un peu mon code avant de le ballancer sur le forum  :ange: )
 
Finallement, j'ai réécris mon code pour fonctionner en ligne de commandes. La compilation a réussit. Pas envie de me prendre encore la tête sur Wx pour l'instant (je vais attendre le prochaine tuto du Siteduzero).
Je tient à m'excuser de ne pas connaitre par cœur la documentation python et d'être un noob.


---------------
Une seule DLL vous manque et tout est déréglé...
n°1828731
masklinn
í dag viðrar vel til loftárása
Posté le 17-12-2008 à 18:58:49  profilanswer
 

gzii a écrit :

Code :
  1. #                 if cost_var == 1:
  2. #                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )
  3. #                 else:
  4. #                     self.statictext2.SetLabel("Vous pouvez utiliser une petite table de mesure tridimentionnelle" )


J'ai mal lu ou bien on fait la même chose dans les deux cas ?


De toute façon la fonction OnValidationBouton (nommage qui va complètement à l'encontre de la PEP8 par ailleurs) ce sont 40 cas qui font la même chose en changeant juste la chaîne bindée, c'est immonde [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1828873
gzii
court-circuit
Posté le 18-12-2008 à 10:33:10  profilanswer
 

Oui j'ai vu ça.
Du coup je m'étais posé la question pour les switch
(à proscrire ou pas je trouvais que ça donnait un code assez clair dans quelques cas en C/C++/java/autres).
Apparemment en Python c'est une bidouille, un dictionnaire ou autres ?


Message édité par gzii le 18-12-2008 à 10:33:58
n°1828899
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2008 à 11:15:07  profilanswer
 

en python, on utilise un dict dans ce genre de cas (etici un case n'aiderait pas spécialement, il faudrait quand même en nester une demi-douzaine)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Py2exe] Problème de compilation

 

Sujets relatifs
SQL -> Probleme contraintes et relations, je bloquePetit problème de script (echo)
Problème sur ScilabProblème image liée soulignée ou non ?
Problème de lien interne[SPIP][RESOLU] Problème pour créer un nouvel article
Problème formulaire AJAX avec Firefoxtable & innerHTML probleme avec un formulaire
problème sélection dans un intervalle en sql[Probleme] Dynamic_cast<T>(x) - Unix Segfault
Plus de sujets relatifs à : [Py2exe] Problème de compilation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR