Thrift生成python依赖项

时间:2014-09-02 20:11:40

标签: thrift

我在同一名称空间中有2个thrift定义文件

file1.thrift

namespace some_name
some types

file2.thrift

namespace some_name
include "file1.thrift"
some types ....

做的时候

thrift --gen py -r -out folder file2.thrift

我希望获得在python代码中生成的file1.thrift中定义的类型。 但事实并非如此... 我在这里缺少什么?

谢谢

2 个答案:

答案 0 :(得分:2)

原因

Apache Thrift编译器会在没有警告的情况下覆盖现有文件。因为您使用相同的命名空间,所以在处理下一个IDL文件时会覆盖某些文件,如ttypes.pyconstants.py

解决方案

  • 始终将属于一个名称空间的声明放入一个Thrift IDL文件
  • 为不同的Thrift IDL文件使用不同的命名空间

答案 1 :(得分:0)

一种解决方法是为每个文件添加相应的子命名空间。

例如:

<强> file1.thrift

namespace py some_name.file1

...

<强> file2.thrift

namespace py some_name.file2

...

然后它不应该覆盖文件。我希望这对python来说是固定的,因为它适用于没有这种黑客的其他语言。