Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann der vom amqp-Modul unter Python2.7.6 gemeldete Fehler behoben werden?

Wie kann der vom amqp-Modul unter Python2.7.6 gemeldete Fehler behoben werden?

零下一度
零下一度Original
2017-06-30 13:37:021634Durchsuche

Die Umgebung der Maschine ist Python2.7.6;

Ich habe amqp mit pip install installiert. Es wurde normal installiert und es wurde kein Fehler gemeldet.

Die installierte Version von amqp ist 2.1. 4.

In Python lautet der Fehler bei Verwendung von import amqp wie folgt:

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 und Google haben einige Struct( ) Argument 1 muss eine Zeichenfolge sein, nicht Unicode-bezogen. Der Inhalt, etwas nützlich, ist die Diskussion auf Github

Als ich diese Version des Codes sah

 

Ich folgte dem Beispiel und änderte die entsprechenden Stellen in „Die uncodierte Form besteht darin, u“ vor der Zeichenfolge hinzuzufügen

hat das Problem nicht gelöst

Nach mehrmaliger Überprüfung habe ich endlich darüber nachgedacht und die geöffnet Datei, in der der Fehler früher gemeldet wurde, und habe mir Zeile 298 angesehen. Die Zeile vor _method_name lautet:

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

, die ich zuvor in Unicode

METHOD_NAME_MAP[unpack(u&#39;>I&#39;, pack(u&#39;>HH&#39;, *_method_id))[0]] = \
weil es so auf Github geändert wurde. Nun, ich habe es ohne nachzudenken kopiert

Eigentlich ändern Sie es einfach wie folgt:

METHOD_NAME_MAP[unpack(str(&#39;>I&#39;), pack(str(&#39;>HH&#39;), *_method_id))[0]] = \
Verwenden Sie import amqp erneut und es wird kein Fehler auftreten

Rückblickend wurde im Fehlerbericht klar angegeben, dass eine Zeichenfolge erforderlich ist. Befolgen Sie diese also einfach, aber ich habe nicht sorgfältig nachgedacht und habe wiederholt Probleme gehabt mit Unicode, und habe zu viele Umwege gemacht.

Dies ist das erste Mal, dass ich darauf gestoßen bin. Wenn Sie einen Fehler melden, müssen Sie den Quellcode in der Python-Bibliothek ändern. Es ist auch betrunken Nehmen Sie es auf

Das obige ist der detaillierte Inhalt vonWie kann der vom amqp-Modul unter Python2.7.6 gemeldete Fehler behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn