2014-02-19 23 views
1

我似乎對Apache Thrift有些誤解。我已經使用tutorial.thrift文件安裝並生成了python綁定。我操縱了我的PYTHONPATH環境變量以允許從生成的文件導入。當我導入tutorial.Calculator' it can't find shared.SharedService`。這是Apache Thrift的依賴關係還是我必須定義的東西?無法在節儉教程中導入shared.SharedService

[email protected]:~/tmp$ export PYTHONPATH=$PYTHON:`pwd`/gen-py 
[email protected]:~/tmp$ echo $PYTHONPATH 
:/home/ericu/tmp/gen-py 
[email protected]:~/tmp$ c 
c: command not found 
[email protected]:~/tmp$ cd 
[email protected]:~$ pyhon 
No command 'pyhon' found, did you mean: 
Command 'python' from package 'python-minimal' (main) 
pyhon: command not found 
[email protected]:~$ 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

SharedService是另一個Thrift IDL文件的一部分,該文件包含在tutorial.thrift IDL文件中。 Tbus,你也必須生成共享服務的代碼。最簡單的方法是使用-r選項(「遞歸」)調用Thrift編譯器,該選項將爲傳遞的IDL文件和所有包含的依賴項生成代碼。

教程頁面的確在這裏誤導。如果你想提交JIRA票,請做。

+0

感謝您的澄清。 –

+1

供參考:教程頁面已更新。 – JensG