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' 都是同樣操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章