amqp模块在python2.7.6版本上报错的问题

阅读: 评论:0

amqp模块在python2.7.6版本上报错的问题

amqp模块在python2.7.6版本上报错的问题

机器的环境是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  # noqaFile "/usr/local/lib/python2.7/site-packages/amqp/basic_message.py", line 29, in <module>from .serialization import GenericContentFile "/usr/local/lib/python2.7/site-packages/amqp/serialization.py", line 31, in <module>from .exceptions import FrameSyntaxErrorFile "/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('>I', pack('>HH', *_method_id))[0]] = 

之前被我改成了unicode

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

因为github上就是这么改的嘛,完全没经过大脑就照搬了

实际上,改成如下就可以了:

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

再次使用 import amqp就不会报错了

回头想想,报错里面都说清楚了,需要一个string,照做就行了,但是不仔细思考,反复纠结unicode,走太多弯路.

第一次遇到报错要去python库里面改源代码的,也是醉醉的,勉强记录一下吧.

 

转载于:.html

本文发布于:2024-01-31 17:09:18,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170669216130082.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报错   模块   版本   amqp
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23