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 :

Si quelqu'un a déjà eu le même problème


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut Si quelqu'un a déjà eu le même problème
    Bonjour,
    J'utilise Lazygal, un programme écrit en Python, pour générer des pages web avec mes photos. Jusqu'à présent, aucun problème mais depuis hier et pour une raison incompréhensible par moi, je n'obtiens plus que :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Traceback (most recent call last):
      File "/usr/bin/lazygal", line 210, in <module>
        options.check_all_dirs, options.clean_dest)
      File "/var/lib/python-support/python2.5/lazygal/generators.py", line 854, in generate
        destgal.make()
      File "/var/lib/python-support/python2.5/lazygal/generators.py", line 538, in make
        make.FileMakeObject.make(self, force)
      File "/var/lib/python-support/python2.5/lazygal/make.py", line 58, in make
        d.make() # dependency building is not forced, regardless of current
      File "/var/lib/python-support/python2.5/lazygal/make.py", line 58, in make
        d.make() # dependency building is not forced, regardless of current
      File "/var/lib/python-support/python2.5/lazygal/make.py", line 61, in make
        self.build()
      File "/var/lib/python-support/python2.5/lazygal/generators.py", line 283, in build
        self.page_template.dump(tpl_values, self.page_path)
      File "/var/lib/python-support/python2.5/lazygal/tpl.py", line 54, in dump
        out=page, encoding='utf-8')
      File "/var/lib/python-support/python2.5/genshi/core.py", line 179, in render
        return encode(generator, method=method, encoding=encoding, out=out)
      File "/var/lib/python-support/python2.5/genshi/output.py", line 61, in encode
        for chunk in iterator:
      File "/var/lib/python-support/python2.5/genshi/output.py", line 311, in __call__
        for kind, data, pos in stream:
      File "/var/lib/python-support/python2.5/genshi/output.py", line 592, in __call__
        for kind, data, pos in stream:
      File "/var/lib/python-support/python2.5/genshi/output.py", line 707, in __call__
        text = mjoin(textbuf, escape_quotes=False)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128)
    et ceci, quelques soient les données que je donne en entrée. Merci d'avance pour vos explications.

    PS. j'utilise python 2.5.2 et lazygal 0.4 sous linux Debian.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    Bonjour,

    Cette erreur pouvant provenir de plusieurs choses différentes, je ne peux pas vous aider sans le code ou au moins la fonction qui a généré cette erreur.
    Un petit bout de code serait le bienvenu

    sinon, lisez le tutorial de sebsauvage sur les 'charset' et les encodages/décodage de caractères.

    Lotendan

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    sans le code ou au moins la fonction qui a généré cette erreur.
    Oui, cela peut servir, mais le libellé fait plutôt penser à une erreur provenant des données.
    sinon, lisez le tutorial de sebsauvage
    Très bonne lecture en effet. Excellent conseil.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut
    Merci d'avoir essayé de m'aider. Je vais préciser un peu ma question : lazygal est un programme libre écrit en Python qu'on peut installer facilement rapidement (sous Debian, il suffit d'un apt-get install lazygal, cela installe chez mois la version 0.4). Depuis quelques jours, il ne fonctionne plus chez moi. J'ai fait plusieurs test, cela ne semble pas venir des données. J'ai été sur le site de lazygal pour installer la dernière version (0.5), et là encore j'obtiens une erreur (pas la même). Bref, aucun code n'est de moi dans cette histoire : ou bien lazygal est buggé (mais il fonctionnait chez moi il y a quelques jours !?), ou bien j'ai changé un truc dans mon système qui empêche lazygal de fonctionner. Bref, je suis conscient de ne pas être dans le forum idéal pour cette question, mais si une âme charitable pouvait installer lazygal sous Linux et me dire si ça tourne chez lui...

  5. #5
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Salut

    Vu le message d'erreur, c'est sans doute du à un caractère accentué ou pas commun d'une manière ou d'une autre.
    Caractère qui est envoyé dans un template à Genshi.

    D'ailleurs l'idée colle bien avec le sujet de la release 0.4 de lazygal:
    Lazygal 0.4 which can speak foreign languages.
    Soit la gestion du l'unicode. C'est justement un souci d'encodage.

    On voit à cette ligne 54 que lazygal demande un encodage utf-8.
    Quel est l'encodage de vos données ?

    Peut-être viennent elles d'un windows. J'irais même jusqu'à penser que ce sont les données EXIF d'une photo qui posent problème.

    Enlevez les photos récentes jusqu'à retrouver laquelle pose souci. Profitez-en pour faire un rapport de bug à l'auteur

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Bref, je suis conscient de ne pas être dans le forum idéal pour cette question, mais si une âme charitable pouvait installer lazygal sous Linux et me dire si ça tourne chez lui...
    La chose a bien fonctionné chez vous pendant un certain temps. Si on l'installe ailleurs, que çà marche ou pas ne dira pas pourquoi "c'est tombé en panne" chez vous.

    Question qu'est ce qui a été fait récemment autour de la gestion de l'"encoding" côté système ou utilisateur que ce soit sous Python ou sous Linux?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    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
    0- Quelle est ta version de Python ?

    C’est important car les implémentations de l’Unicode jusqu’à Python 2.7 et à partir de Python 3.0 sont diamétralement opposées.

    Ce qui suit suppose une version <= 2.7






    1- encode() est une fonction qui transforme une chaîne de type Unicode en une chaîne de type bytes.

    Mais je ne trouve pas de page de doc dans laquelle il soit question d’une fonction encode() avec 4 arguments.

    Je dis ça à propos de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return encode(generator, method=method, encoding=encoding, out=out)








    2- Toutefois je crois que le problème n’est pas au niveau d’un encodage, mais d’un décodage.



    Je crois comprendre que
    for chunk in iterator:
    effectue une itération dans le generator situé comme premier argument de encode()
    et que c’est dans l’obtention d’un objet à fournir par generator qu’il doit y avoir une difficulté de décodage.


    Si c’est bien ça, des chaînes de type bytes (= 8-bit string) devraient donc être décodées en chaînes de type Unicode et ces dernières être fournies par generator.

    Parmi ces chaînes qui doivent être décodées avant d’être fournies par generator, il doit y en avoir une qui comporte le caractère codé par 0xc3 dans un certain encoding.



    Cependant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128)
    donne à penser que c’est un codec utilisant l’encoding ASCII qui cherche à décoder les chaînes pour qu’elles soient fournies par generator.


    Or ASCII est un encodage qui n’utilise que des codes compris entre 0 et 127,
    et 0xc3 c’est 195, qui code par exemple Ã
    (A avec tilde) en iso-8859-1 ,iso-8859-2, iso-8859-15, CP1252, etc.






    Si je comprends bien le bazar, je dirais donc qu’il faudrait examiner les chaînes, a priori de type bytes (8-bit string) , qui se retrouvent soumises à un codec utilisant l’encoding ASCII pour être décodées en chaînes Unicodes.
    D’où viennent-elles ? Pourquoi faut il qu’elles soient transformées en Unicode ?
    C’est ce que demande aussi Antoine935
    Par contre, je pense moi qu'il s'agit d'un problème de décodage et non pas d’encodage.

    Pourquoi intervient un codec qui utilise ASCII qui ne donne que des codes identiques en Unicode , alors qu'il semble nécessaire de créer des chaînes Unicode ?



    Enfin bref, il a dû apparaître dans les descriptifs de tes photos un cas où une chaîne comporte des accents et en l’occurence la lettre Ã
    Et donc le conseil de Antoine est à mon avis fort judicieusement scientifique.
    Enlevez les photos récentes jusqu'à retrouver laquelle pose souci.

  8. #8
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Par contre, je pense moi qu'il s'agit d'un problème de décodage et non pas d’encodage.
    Euh, sachant que je m'embrouille toujours avec encode et decode, ce serait pas étonnant

  9. #9
    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
    Et ce ne serait pas non plus étonnant que ce soit moi qui me trompe.

    Bien que j’aie étudié le sujet en long et en large et que j’aie compris certains points, je sens qu’il y en a encore des choses qui se dérobent dans une troisième dimension.

    Cette dimension c’est la profondeur de la mare dans laquelle je patauge encore.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut
    Merci pour vos réponses.
    Je ne pense pas que le problème vienne de mes données (même si au premier abord, c'est une bonne piste), parce que j'ai fait toutes sortes de tests.
    J'ai écrit à la personne qui est à l'origine de lazygal, j'attends sa réponse...

Discussions similaires

  1. Quelques questions à propos du langage lui même.
    Par Invité dans le forum Langage
    Réponses: 85
    Dernier message: 10/09/2014, 14h04
  2. Passer quelques lignes en dessous pour la même macro
    Par trenchtown dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/12/2008, 13h37
  3. [CRXI 2]Des tableaux toujours les mêmes problèmes (quadrillage)
    Par lazarel dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 24/07/2007, 10h04
  4. même problème acces concurrent aux fichiers sur le serveur
    Par al3alwa dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/06/2007, 16h51
  5. Prétentions salariales, toujours le même problème
    Par szdavid dans le forum Etudes
    Réponses: 32
    Dernier message: 06/05/2005, 11h17

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