原因: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
