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

PyQt Python Discussion :

erreur unhandled UnicodeDecodeError


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut erreur unhandled UnicodeDecodeError
    Bonjour,


    j'aimerais savoir si vous pouvez m'éclairer sur cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unhandled UnicodeDecodeError ""ascii" codec can't decode byte 0xe9 in position 29: ordinal in range (128)"  dans le fichier d:\python26\Lib\sites-packages\eric4\Debugclients\python\debugbase.py line  exclist = [exctypetxt, str(excval)]
    elle survient quand je veux me connecter à ma base de donnée avec sqlaclhemy et elixir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    metadata.bind = "mysql://root:mdp@127.0.0.1/bdd_uno"
    using_options_defaults(shortnames=True)
    Quand je regarde l'erreur il m'indique qu'il y a une erreur d'import sur exctype, exctypetxt et la dll excval est introuvable. du coup je peux plus exécuté mon application. ceci est arrivé après installation de MySQL-python-1.2.2.win32-py2.6.exe

    Si vous avez une idée je suis preneuse car je suis a bout, sachant qu'au travaille sa fonctionne bizard!

    Cordialement

  2. #2
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    C'est une erreur Python qui n'a rien à voir avec QT4 mais j'ai regardé le code source impliqué ici http://die-offenbachs.homelinux.org:...py?view=markup à la ligne 619 et je te conseillerai de modifier ce fichier chez toi pour mettre un print sur excval juste avant l'erreur (histoire de voir ce qu'il y a dedans) car il y a manifestement un caractère non-ASCII quelque part.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Citation Envoyé par LinC49 Voir le message
    Quand je regarde l'erreur il m'indique qu'il y a une erreur d'import sur exctype, exctypetxt et la dll excval est introuvable. ...
    Il ne sagit pas d'une dll, excval contient des arguments d'une fonction de débogage de Eric.

    Et l'erreur qui apparaît chez toi semble elle-même être un bug ...

    Il faudrait essayer ton code en dehors de Eric, pour éliminer ce premier problème.

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    0xE9 c'est le caractère 'é' en latin-1 et l'erreur est explicite: ""ascii" codec can't decode byte 0xe9 in position 29: ordinal in range (128)" le code est considéré comme étant écrit en ASCII et 'é' est en dehors des limites ASCII.
    Une erreur qui survient lors des exceptions...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    570 	def user_exception(self,frame,(exctype,excval,exctb),unhandled=0):
    571 	"""
    572     Reimplemented to report an exception to the debug server.
    573     
    574     @param frame the frame object
    575     @param exctype the type of the exception
    576     @param excval data about the exception
    577     @param exctb traceback for the exception
    578     @param unhandled flag indicating an uncaught exception
    579     """
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    618 	except TypeError:
    619 	exclist = [exctypetxt, str(excval)]
    Puisque LinC49 travaille sous Python 2.6 qu'en est il du shebang de son code ?
    Pour la partie de code ou est l'erreur c'est de l'UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: utf-8 -*-
    Mais comme LinC49 est sous Windows ce serait sans doute du 1252.

    Qu'en est il LinC49 ? Qu'avez vous en entête de votre fichier py ?

    L'idée n'est pas mauvaise: un print exctypetxt, str(excval), voir print exctypetxt, excval, pour voir ce que cela contient.

    L'idée est de savoir d’où viens 'é'

    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Merci de vous intéresser à mon problème que je trouve vraiment bizard!
    il faut savoir que l'erreur survient quand je lance le fichier BDD.py (fichier dans lequel je crée mes tables, requête...) code qui fonctionne parfaitement au travail. cependant pour cibler l'erreur j'ai effacé toute mes tables, et requête et ce qui semble causé problème c'est la connexion à la BDD (WampServer-PhpMyAdmin) en rouge.

    Fichier Bdd.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import sys
    from elixir import *
    from sqlalchemy.exc import *
    from elixir import using_options_defaults
    
    
    metadata.bind = "mysql://root:mysql@localhost/celine"
    using_options_defaults(shortnames=True)
    
    setup_all()
    create_all()
    
    if __name__ == "__main__":
    
        print "Hello World";
    J'ai tenté dans le fichier DebugBase.py un print exctypetxt, str(excval), voir print exctypetxt, excval ceci donne rien, toujours la même erreur. je pense que ceci ne vient pas du fichier DebugBase.py mais vraiment de la connexion a la bdd, car si je la supprime mon application se lance parfaitement.

    Cordialement

  6. #6
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Je pensai plutôt que le problème venait du fait qu'un "é" était présent dans le texte de l'exception puisque le problème survient à une ligne où une conversion avec str() est effectuée (d'où ma proposition du print).

    Comme le dit VinsS, éssayer sans Eric serait une bonne chose.

    Une idée qui me vient : y a t-il des tables/noms de bases/chaînes de connexion possédant un "é" ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Linc49, Ne te préoccupe pas de cette erreur qui est un bug évident de Eric, (voir plus bas) teste ton code directement plutôt que de le lancer à partir de Eric et avec une base vide pour commencer.

    Sinon tu riques de perdre du temps pour un souci qui n'existe pas dans ton code. Après tout pourquoi n'aurais-tu pas de 'é' dans tes données.


    L'erreur qui est levée fait suite à un bloc try-except:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
            if unhandled:
     	        exctypetxt = "unhandled %s" % unicode(exctype)
     	    else:
     	        exctypetxt = unicode(exctype)
     	    try:
     	        exclist = [exctypetxt,
     	                unicode(excval).encode(self._dbgClient.getCoding())]
     	    except TypeError:
     	        exclist = [exctypetxt, str(excval)]
    Il y a ici, une erreur de type qui manifestement ne doit pas être critique puisqu' elle est ignorée et unicode(excval) est remplacé par str(excval).

    Pour savoir quelle était l'erreur de type, la vraie question en ce qui te concerne, il faut changer les lignes comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     	    try:
     	        exclist = [exctypetxt,
     	                unicode(excval).encode(self._dbgClient.getCoding())]
     	    except TypeError as why:
                    print why
     	        exclist = [exctypetxt, str(excval)]
    Je suis inscrit sur la ML d'Eric et je rapporterai bien le bug, mais je ne vois pas du tout comment le reproduire chez moi.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Merci pour vos réponses.

    Ce qui me choque le plus, c'est qu' au travail je suis dans les même conditions ou presque c'est-à-dire sous eric, python26, elixir, sqlyog et sa fonctionne très bien, la seule chose qui change à mon domicile c'est WampServer et PhpMyAdmin.
    J'ai tenté sous netbeans au travail sa fonctionne bien mais pas à mon domicile. Est ce que PyQt n'aime pas WampServer-PhpMyadmin?

    Bizard bizard

    Je crois que c'est un signe, que je ne doit pas travailler chez moi

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 688
    Par défaut
    Salut,
    Citation Envoyé par LinC49 Voir le message
    Ce qui me choque le plus, c'est qu' au travail je suis dans les même conditions ou presque
    Si l'erreur se produit effectivement ici:
    metadata.bind = "mysql://root:mysql@localhost/celine"
    il faut chercher du côté versions/paramétrages de:
    • sqlalchemy
    • le driver mysql
    • la configuration de la bdd,
    • ...

    Et si en plus vous n'utilisez même pas les mêmes composants vous êtes dans les mêmes conditions "ou presque"
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. erreur : Unhandled exception type InterruptedException
    Par the watcher dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2010, 13h10
  2. "Exception was unhandled" Erreur pas bien claire
    Par Just-Soft dans le forum C#
    Réponses: 2
    Dernier message: 17/03/2009, 14h32
  3. Réponses: 13
    Dernier message: 28/04/2008, 11h48
  4. erreur :An unhandled exception of type
    Par Blunt dans le forum Visual C++
    Réponses: 3
    Dernier message: 21/04/2007, 19h55
  5. [Debutant] Erreur "Unhandled event loop exception"
    Par pilz dans le forum Eclipse Platform
    Réponses: 14
    Dernier message: 08/12/2004, 15h19

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