", ligne 1, dans Fichier "/usr/local"/> ", ligne 1, dans Fichier "/usr/local">

Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur signalée par le module amqp sur python2.7.6 ?

Comment résoudre l'erreur signalée par le module amqp sur python2.7.6 ?

零下一度
零下一度original
2017-06-30 13:37:021603parcourir

L'environnement de la machine est python2.7.6;

J'ai installé amqp en utilisant pip install. Il a été installé normalement et aucune erreur n'a été signalée.

La version installée d'amqp est 2.1. 4.

En python, lors de l'utilisation de import amqp, l'erreur est la suivante :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/amqp/__init__.py", line 45, in <module>
    from .basic_message import Message  # noqa
  File "/usr/local/lib/python2.7/site-packages/amqp/basic_message.py", line 29, in <module>
    from .serialization import GenericContent
  File "/usr/local/lib/python2.7/site-packages/amqp/serialization.py", line 31, in <module>
    from .exceptions import FrameSyntaxError
  File "/usr/local/lib/python2.7/site-packages/amqp/exceptions.py", line 298, in <module>
    _method_name
TypeError: Struct() argument 1 must be string, not unicode

Baidu et Google ont des Struct( ) l'argument 1 doit être une chaîne, non lié à l'Unicode. Le contenu, légèrement utile, est la discussion sur github

Quand j'ai vu cette version du code

 

J'ai suivi l'exemple et changé les emplacements correspondants en Le formulaire non codé consiste à ajouter u'' devant la chaîne

n'a pas résolu le problème

Après un examen répété, j'y ai finalement réfléchi et j'ai ouvert le fichier. fichier dans lequel l'erreur a été signalée plus tôt et a examiné la ligne 298. La ligne avant _method_name est :

METHOD_NAME_MAP[unpack('>I', pack('>HH', *_method_id))[0]] = \

Je l'ai changée en Unicode auparavant,

METHOD_NAME_MAP[unpack(u&#39;>I&#39;, pack(u&#39;>HH&#39;, *_method_id))[0]] = \

parce que c'est comme ça qu'il a été modifié sur github. Eh bien, je l'ai copié sans réfléchir du tout

En fait, changez-le simplement comme suit :

METHOD_NAME_MAP[unpack(str(&#39;>I&#39;), pack(str(&#39;>HH&#39;), *_method_id))[0]] = \

Utiliser à nouveau import amqp ne signalera pas d'erreur

Avec le recul, il était clairement indiqué dans le rapport d'erreur qu'une chaîne était nécessaire, alors suivez-la simplement, mais je n'ai pas réfléchi attentivement et j'ai eu du mal à plusieurs reprises avec unicode, et a fait trop de détours.

C'est la première fois que je le rencontre. Si vous signalez une erreur, vous devez changer le code source dans la bibliothèque python. C'est aussi ivre, donc je le fais à contrecœur. enregistrez-le

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn