错误导入Windows上的Impyla库

时间:2016-08-30 06:18:57

标签: python windows impyla

我在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 import connect

     

文件“C:\ Anaconda3 \ lib \ site-packages \ impala \ dbapi.py”,第28行,in       将impala.hiveserver2导入为hs2

     

文件“C:\ Anaconda3 \ lib \ site-packages \ impala \ hiveserver2.py”,第32行,in       来自impala._thrift_api导入(

     

文件“C:\ Anaconda3 \ lib \ site-packages \ impala_thrift_api.py”,第73行,       的 include_dirs = [thrift_dir])

     

文件“C:\ Anaconda3 \ lib \ site-packages \ thriftpy \ parser__init __。py”,第30行,载入中       的 include_dir = include_dir)

     

文件“C:\ Anaconda3 \ lib \ site-packages \ thriftpy \ parser \ parser.py”,第496行,解析       url_scheme))

     

thriftpy.parser.exc.ThriftParserError:ThriftPy不支持在协议'c'中生成带路径的模块

当我尝试打印include_dir时,

D:/test\thrift

我根本无法导入libray

帮帮我

2 个答案:

答案 0 :(得分:7)

我遇到了与thriftpy相同的问题,windows上的问题是绝对路径就像 C:\ foo \ bar.thrift

但是,thrift库解析文件的方式,它会检测 C:,就好像它是 http: https:

它非常容易解决,您只需要使用像路径[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上的补丁提交的相同更改...也许它将被合并到下一版本的thrift中。

File "C:\Anaconda3\lib\site-packages\thriftpy\parser\parser.py", line 488

-    if url_scheme == '':
+    if len(url_scheme) <= 1:

我为什么这种改变有效的理由是在拉取请求中。如果它已合并,那么当您更新库时,您不必担心再次进行相同的更改。如果没有,则再次剥离两个字符。

答案 1 :(得分:2)

我在Windows上的 Anaconda Python 3.6发行版上遇到了与impyla相同的错误。我没有使用pip进行安装,而是使用:

conda install -c anaconda impyla

https://anaconda.org/anaconda/impyla