happybase1.1.0 报错:ThriftPy does not support generating module with path in protocol 'c'
storm里面的python脚本需要读写hbase,在本地运行测试的时候报错:thriftpy.parser.exc.ThriftParserError: ThriftPy does not support generating module with path in protocol ‘c’
原因:happybase1.1.0在win下不支持绝对路径
具体原因:happybase要读取C:\ProgramData\Anaconda3\Lib\site-packages\happybase\Hbase.thrift,但在C:\ProgramData\Anaconda3\Lib\site-packages\thriftpy\parser\parser.py中的496行
path是Hbase.thrift的绝对路径(我的是“C:\ProgramData\Anaconda3\Lib\site-packages\happybase\Hbase.thrift”),但经过urlparse(path).scheme后,url_scheme变成了“c”,(这也就是报错信息中最后的“c”)。根据代码,url_scheme既不为“”,也不包含
(‘http’,’https’),则只能为raise报错。
解决方案:将488行的url_scheme == ”改为url_scheme in (‘c’, ”),即
url_scheme = urlparse(path).scheme
#if url_scheme == '':
if url_scheme in ('c', ''):
with open(path) as fh:
data = fh.read()
elif url_scheme in ('http', 'https'):
data = urlopen(path).read()
else:
raise ThriftParserError('ThriftPy does not support generating module '
'with path in protocol \'{}\''.format(
url_scheme))
注:’c’为盘符,就是我把python装在了c盘,只要能让那个判断为真就行。ThriftPy does not support generating module with path in protocol ‘d’ 或‘e’或’f’ 都是同样操作
还没有评论,来说两句吧...