IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Classes et fonctions disparues. Au secours.


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut Classes et fonctions disparues. Au secours.
    Bonjour,

    Voici un problème bien mystérieux que je soumets à vos neurones...

    J'ai une application Python compilée avec Py2exe que j'ai essayé sur 3 ordinateurs. Tout fonctionne.

    Mais un des utilisateurs rencontre un problème sur son ordinateur (windows comme moi) sur une des fonctions. Lorsque qu'il cliquez sur un bouton sensé ouvrir la frame principale du module MODULE1, l'erreur suivante apparaît :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AttributeError: 'module' object has no attribute 'MyFrame'
    J'ai ajouté dans mon code "print dir(MODULE1)" qui liste dans un log les fonctions et classes du module concerné. Et là, surprise ! A la lecture du log de l'utilisateur, la moitié des classes et fonctions du module a disparue !

    Alors que sur mon ordinateur, le log (avec la même application) m'indique que la liste est bien complète. Cela parait aberrant non ?

    Auriez-vous une idée de l'origine du problème ?

    Merci pour votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    T'as essayé de lui refiler une autre copie ? Si ça se trouve y'a eu une couille lors du transfert... non ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Il y a trop de couille et pas assez de q dans ton message, N.Tox.

    Tu as voulu écrire coquille, n’est ce pas ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    En fait, il l'a téléchargé et installé plusieurs fois. Le problème persiste. J'ai même refais la compilation (et je l'ai essayé chez moi également : tout fonctionne).

    Un indice peut-être :

    Dans mon module, il y a les importations classiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import wx
    import datetime
    import calendar
    import sys
    [...]
    import matplotlib
    import numpy
    from matplotlib.figure import Figure   <<< C'est à partir d'ici que ça bloque
    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
    [...]
    J'ai remarqué (grâce à mon "print dir(MODULE1)") que de WX à NUMPY, tous les modules sont bien importés. Par contre, à partir de matplotlib.figure[...] inclus, la suite des modules n'est pas importé (et tout le reste du code inclus).

    Un indice important, non ? Dites-moi que oui, pitié...

  5. #5
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Tu a regardé si le 'from matplotlib.figure import Figure' lève un exception (si oui, le message d'erreur complet pourrait t'aiguiller) ? Dans ce cas effectivement, la suite ne serait pas exécutée.

  6. #6
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Regarde ici, d'autres ont eu un problème similaire au tient.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    En fait, il n'y a que l'erreur dont je parlais au début qui apparait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AttributeError: 'module' object has no attribute 'MyFrame'
    Mais c'est sûrement Matplotlib qui coince...

    Vikki, j'ai essayé la solution que tu as trouvé. Mais cela ne fonctionne toujours pas...

    Comment mieux identifier l'erreur sur le poste distant de mon utilisateur ?

  8. #8
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    tu peux toujours essayer de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from matplotlib.figure import Figure   <<< C'est à partir d'ici que ça bloque
    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import matplotlib.figure ; Figure=matplotlib.figure.Figure
    import matplotlib.backends.backend_wxagg ; FigureCanvasWxAgg=matplotlib.backends.backend_wxagg.FigureCanvasWxAgg
    je ne sais absolument pas si ça va marcher, mais ça coûte rien d'essayer...

    Sinon, tu peux toujours laisser un message à (aux) l'auteur(s)

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Je vais essayer cela. Je vous tiens au courant.

    Par contre, il est étonnant que Python arrête tout simplement la "lecture" du module au niveau de l'importation qui cloche sans afficher d'erreur, non ?

    Il y a t'il un moyen de réussir de remonter jusqu'à l'erreur ?

    Merci.

  10. #10
    Membre éprouvé
    Inscrit en
    Mars 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2003
    Messages : 127
    Par défaut
    Tu peux essayer ça par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try:
       from bidule import machin 
    except:
        exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
        print exceptionType,exceptionValue 
        traceback.print_tb(exceptionTraceback)

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    n.tox, j'ai essayé ta solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import matplotlib.figure ; Figure=matplotlib.figure.Figure
    import matplotlib.backends.backend_wxagg ; FigureCanvasWxAgg=matplotlib.backends.backend_wxagg.FigureCanvasWxAgg
    Mais ça ne change rien...

    Par contre, j'ai un nouvel indice :

    Mon utilisateur a testé une petite application test basée sur Matplotlib. Ca coince comme prévu à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from matplotlib.figure import Figure
    Cela donne une erreur Windows : "Instruction illégale (0xc000001d)" !!!!

    Mais je ne trouve aucune info la-dessus sur cette erreur...

    Une idée ?

  12. #12
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Ben... il pourrait faire tourner ton programme depuis les sources, ce qui aurait pour effet qu'il doive installer python et les biblio nécéssaires...

    Ou bien, installer python, peut-être installer (compiler ?) matplotlib depuis les sources de ce dernier, installer py2exe, créer un petit programme inutile qui importe les module "défectueux", créer un exe de ce truc, en récupérer les fichiers libs et s'en servir pour remplacer ceux contenu dansla distribution py2exe de ton programme...

    Le plus simple à mon avis est de lui faire touner le programme depuis les sources

  13. #13
    Membre chevronné
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Par défaut
    Bonjour,
    Pourrait-on voir le "setup.py" ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/06/2007, 08h57
  2. [classe ou fonction] fonction magic number ?
    Par Leinad dans le forum Langage
    Réponses: 13
    Dernier message: 28/07/2006, 17h58
  3. Classes ou fonctions ?
    Par alceste dans le forum C++
    Réponses: 6
    Dernier message: 27/06/2006, 12h44
  4. problème classe et fonction
    Par zmatz dans le forum C++
    Réponses: 14
    Dernier message: 19/10/2005, 21h46
  5. Classes - Sub/Fonction vs Property
    Par j_bolduc dans le forum ASP
    Réponses: 6
    Dernier message: 24/08/2005, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo