我正在使用python3.4试用阿帕奇,因为它在build目录下有lib.linux-x86_64-3.4。但我一直收到这条错误信息
File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/transport/TTransport.py", line 163, in write
self.__wbuf.write(buf)
TypeError: string argument expected, got 'bytes'有人知道这是怎么回事,可能有办法吗?
下面的是相关代码
socket = TSocket.TSocket('localhost', 9090)
transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Algo.Client(protocol)
transport.open()
ping_req = PingRequest()
ping_resp = client.ping(ping_req)整个回溯:
File "py3client.py", line 36, in <module>
ping_resp = client.ping(ping_req)
File "/home/qunzi/Projects/test/sample_Test/py3.4_thrift/ib/Algo.py", line 66, in ping
self.send_ping(request)
File "/home/qunzi/Projects/test/sample_Test/py3.4_thrift/ib/Algo.py", line 70, in send_ping
self._oprot.writeMessageBegin('ping', TMessageType.CALL, self._seqid)
File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/protocol/TBinaryProtocol.py", line 46, in writeMessageBegin
self.writeI32(TBinaryProtocol.VERSION_1 | type)
File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/protocol/TBinaryProtocol.py", line 111, in writeI32
self.trans.write(buff)
File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/transport/TTransport.py", line 163, in write
self.__wbuf.write(buf)
TypeError: string argument expected, got 'bytes'发布于 2016-10-03 11:54:09
虽然这个问题已经死了,但我似乎得到了一个答案:)
节俭的当前python生成器(截止为0.9.3)生成特定于python2的代码。至少我刚刚切换了齿轮和代码,这给了我同样的错误,现在工作就像一个魅力。
此错误是由(隐式)处理库中所有类似字符串的对象(如字节对象)引起的。然而,在Python3中,StringIO类需要面向字符的字符串(str),而那些面向字节的字符串会导致异常。
一个人应该将一个bug提交到Python2跟踪器,现在他/她应该使用。
https://stackoverflow.com/questions/31869321
复制相似问题