Windows和Apache Thrift可执行文件

1 投票
2 回答
3406 浏览
提问于 2025-04-18 03:20

我正在测试Apache Thrift有多简单,感觉还不错。不过遇到了一个大问题:第一个教程根本无法运行...

我用的是Windows 7,Python 2.7,下载了Thrift的Windows版.exe,版本是0.9.1。我不想从源代码编译,因为我不使用Cygwin等工具。这个.exe文件出现了下面描述的问题。所以我决定试试用Chocolatey来安装Thrift,命令是 cinst Thrift 这个方法很好,成功安装了Thrift v0.9.0。但是这个版本的表现和.exe文件一样,问题依旧。

当我运行在http://thrift.apache.org/tutorial/py上找到的教程时,出现了以下情况:

C:\Users\Me\Desktop\Thrift>thrift -r --gen py tutorial.thrift
[WARNING:C:/Users/Me/Desktop/Thrift/tutorial.thrift:59] Could not find include file shared.thrift

[ERROR:C:/Users/Me/Desktop/Thrift/tutorial.thrift:123] (last token was 'shared.SharedService')
Service "shared.SharedService" has not been defined.

希望这个.exe文件能对其他人有效,因为我真希望不需要从源代码构建。

2 个回答

0

这个命令

thrift -r --gen py tutorial.thrift

使用了 -r[recurse] 这个选项,自动生成了一个名为 shared.thrift 的第二个包含文件。这个 shared.thrift 文件和 tutorial.thrift 文件在同一个文件夹里。因为 Thrift 会根据当前文件夹来查找包含的文件,所以你必须从那个文件夹里明确地调用 Thrift 编译器。

假设你的 Thrift 工作目录在 C:\Thrift,并且 thrift.exe 可以通过搜索路径找到,打开命令提示符,切换到那个文件夹,然后再输入这个命令:

C:\> cd Thrift\tutorial
C:\Thrift\tutorial> thrift.exe -r --gen py tutorial.thrift

PS:0.9.0 版本有点过时了,0.9.1 版本没问题,接下来的 0.9.2 版本会有更多改进。

1

这个回答的意思是,教程假设你有一个名为 /tutorial 的文件夹,并且里面包含两个 .thrift 文件。如果你选择使用 Windows 的 EXE 方式,然后构建你的 tutorial.thrift 文件,你还需要添加 shared.thrift 文件,这个文件可以在 Git 上找到,链接是 https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/shared.thrift

把这个文件保存到你的 tutorial.thrift 文件旁边,这样你就可以继续进行教程了。

撰写回答