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

零下一度
Libérer: 2017-06-30 13:37:02
original
1651 Les gens l'ont consulté

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
Copier après la connexion

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(&#39;>I&#39;, pack(&#39;>HH&#39;, *_method_id))[0]] = \
Copier après la connexion

Je l'ai changée en Unicode auparavant,

METHOD_NAME_MAP[unpack(u&#39;>I&#39;, pack(u&#39;>HH&#39;, *_method_id))[0]] = \
Copier après la connexion

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]] = \
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal