happybase1.0 报错:ThriftPy does not support generating module with path in protocol 'd'

    xiaoxiao2021-03-25  94

    原因:happybase1.0在win下不支持绝对路径

    具体原因:happybase要读取Python\Lib\site-packages\happybase\Hbase.thrift,但在Python\Lib\site-packages\thriftpy\parser\parser.py中的487行

    url_scheme = urlparse(path).scheme if url_scheme == '': 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))

    path是Hbase.thrift的绝对路径(我的是“F:\SoftWare\Python27\Lib\site-packages\happybase\Hbase.thrift”),但经过urlparse(path).scheme后,url_scheme变成了“f”,(这也就是报错信息中最后的“f”)。根据代码,url_scheme既不为“”,也不包含 (‘http’,’https’),则只能为raise报错。 解决方案:将488行的url_scheme == ”改为url_scheme in (‘d’, ”),即

    url_scheme = urlparse(path).scheme #if url_scheme == '': if url_scheme in ('d', ''): 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))

    注:’d’为盘符,就是我把python装在了d盘,只要能让那个判断为真就行。

    参考:https://github.com/eleme/thriftpy/issues/234

    转载请注明原文地址: https://ju.6miu.com/read-21173.html

    最新回复(0)