首頁 > 後端開發 > Python教學 > amqp模組在python2.7.6上報錯怎麼解決?

amqp模組在python2.7.6上報錯怎麼解決?

零下一度
發布: 2017-06-30 13:37:02
原創
1686 人瀏覽過

機器的環境是python2.7.6;

使用pip install安裝了amqp.正常安裝,未報錯.

amqp安裝的版本是2.1.4.

在python中,使用import amqp,報告錯誤如下:

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
登入後複製

 

百度和google了一些Struct() argument 1 must be string, not unicode相關的內容,稍微有用的是github上的討論

看到這個版本的代碼的時候

  

依葫蘆畫瓢,將相應地方的都改成了uncoded形式,即在字串前面加u''.

沒有解決問題

經過反覆查閱,最後思考了一下,將前面報錯的file打開看了一下,在298行_method_name前面一行是:

METHOD_NAME_MAP[unpack(&#39;>I&#39;, pack(&#39;>HH&#39;, *_method_id))[0]] = \
登入後複製

之前被我改成了unicode

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

因為github上就是這麼改的嘛,完全沒經過大腦就照搬了

實際上,改成如下就可以了:

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

再次使用import amqp就不會報錯了

##回頭想想,報錯裡面都說清楚了,需要一個string,照做就行了,但是不仔細思考,反复糾結unicode,走太多彎路.

第一次遇到報錯要去python庫裡面改源程式碼的,也是醉醉的,勉強記錄一下吧.

以上是amqp模組在python2.7.6上報錯怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板