无法在thrift教程中导入shared.SharedService

时间:2014-02-19 04:33:00

标签: python thrift

我似乎对Apache Thrift的某些不太了解。我使用tutorial.thrift文件安装并生成了python绑定。我操纵了我的PYTHONPATH环境变量,允许我从生成的文件中导入。当我导入tutorial.Calculator' it can't find shared.SharedService`时。这是Apache Thrift的依赖还是我必须定义的东西?

ericu@eric-phenom-linux:~/tmp$ export PYTHONPATH=$PYTHON:`pwd`/gen-py
ericu@eric-phenom-linux:~/tmp$ echo $PYTHONPATH
:/home/ericu/tmp/gen-py
ericu@eric-phenom-linux:~/tmp$ c
c: command not found
ericu@eric-phenom-linux:~/tmp$ cd 
ericu@eric-phenom-linux:~$ pyhon
No command 'pyhon' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
pyhon: command not found
ericu@eric-phenom-linux:~$ python
Python 2.7.5 Stackless 3.1b3 060516 (default, Sep 23 2013, 20:17:03) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tutorial
>>> tutorial.Calculator
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Calculator'
>>> import tutorial.Calculator
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ericu/tmp/gen-py/tutorial/Calculator.py", line 10, in <module>
    import shared.SharedService
ImportError: No module named shared.SharedService
>>> 

1 个答案:

答案 0 :(得分:1)

SharedService是另一个Thrift IDL文件的一部分,该文件包含在tutorial.thrift IDL文件中。 Tbus,您还必须为共享服务生成代码。最简单的方法是使用-r选项(“递归”)调用Thrift编译器,这将为传递的IDL文件和所有包含的依赖项生成代码。

教程页面确实在这里误导。如果你想提交JIRA票,请做。