在windows上使用impyla库有问题
我安装了impyla库pip install impyla
尝试在python代码中导入impyla libary时出错
from impala.dbapi import connect # error occured
from impala.util import as_pandas
conn = connect(host='10.xx.xx.xx', database='xx_xx', port=21050)`
回溯(最近一次呼叫最后一次):…
文件“d:/test/test.py”,第14行,in
从impala.dbapi导入连接
文件“C:\ anaconda3\lib\site packages\impala\dbapi.py”,第28行,在
将impala.hiveserver2导入为hs2
文件“c:\ anaconda3\lib\site packages\impala\hiveserver2.py”,第32行,在
从Impala进口(
文件“c:\ anaconda3\lib\site packages\impala_thrift_api.py”,第73行,在
包含目录=[节俭目录])
文件“c:\ anaconda3\lib\site packages\thriftpy\parser\uuuu init\uuu.py”,第30行,加载中
include_dir=包含目录)
文件“c:\ anaconda3\lib\site packages\thriftpy\parser\parser.py”,第496行,在parse中
Url方案)
thriftpy.parser.exc.thriftparserror:thriftpy不支持在协议“c”中生成路径为的模块
当我试图打印include_dir时
D:/test\thrift
我就是一点也不能引进天秤座
帮助我
最佳答案
我对thriftpy也有同样的问题,windows上的问题是一个绝对路径,就像c:\ foo\bar.thrifty
但是,在thrift库解析文件的方式中,它检测到c:
这很容易解决,你只需要从路径中去掉前两个字符,然后用一个类似于切片的路径[2:]
调用thriftpy.load
或在库文件中切片
File "C:\Anaconda3\lib\site-packages\thriftpy\parser__init__.py", line 30
path = "C:\foo\bar.thrift"
thrift.load(path[2:], module_name, include_dirs=include_dirs,
include_dir=include_dir)
或
你可以再深入一点,做同样的修改,我已经提交了一个补丁在github page。也许它将被纳入下一个版本的节俭。
File "C:\Anaconda3\lib\site-packages\thriftpy\parser\parser.py", line 488
- if url_scheme == '':
+ if len(url_scheme) <= 1:
我的理由是为什么这一改变是有效的是在拉请求。如果它合并了,那么在更新库时就不必再担心做同样的更改了。如果不是,那就把这两个字符再去掉。