【问题标题】:Windows and Apache Thrift ExecutableWindows 和 Apache Thrift 可执行文件
【发布时间】:2014-06-03 12:03:54
【问题描述】:

我正在测试学习 Apache Thrift 的简单程度,它看起来很有希望。一个主要问题:第一个教程不起作用...

我有 Windows 7、Python 2.7,并获得了适用于 Windows v.0.9.1 的 Thrift .exe。我宁愿不从源代码编译,因为我不使用 Cygwin 等。exe 给出了下面描述的问题。所以我继续尝试使用 Chocolatey 安装 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 对某人有用,因为我很想避免这种需要从源代码构建的情况。

【问题讨论】:

  • "希望 exe 可以工作" - 确实如此。这只是您的假设,EXE 是问题所在。这个假设是错误的,可以通过尝试 Linux 构建很容易地证明这一点,它的行为完全相同。一般来说,您可能会重新考虑解决问题的策略。与其花时间忙于安装和下载东西,最后一味地责怪其中一个工具,不如尝试解决真正的问题,这需要您首先尝试了解问题的全部内容.然后尝试解决它。​​
  • 你能反驳我帖子的第二行吗?教程旨在盲目地遵循以便理解。如果你想了解 Thrift,你从哪里开始?教程。与其纠正我的问题解决方法,不如看看thrift.apache.org/tutorial。没有引用您在其中提到的文件,并且它们不随 exe 一起提供。感谢您建议它是我缺少的 IDL 文件。由于这是教程 1,我还没有掌握阅读错误消息。
  • 你怪EXE了,EXE没坏。第一条消息也很清楚地说明了这一点:tutorial.thrift:59] Could not find include file shared.thrift。查看第 59 行,您会发现 include 语句,对吗?无论如何,再次感谢您的信息,非常有帮助。我看到很多人对此问题有疑问,但从未真正弄清楚原因。

标签: python windows thrift


【解决方案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 文件旁边,您可以继续学习本教程。

【讨论】:

    【解决方案2】:

    命令

    thrift -r --gen py tutorial.thrift
    

    使用-r[recurse] 开关自动构建第二个包含的IDL 文件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 会有更多改进。

    【讨论】:

    • 看起来真正的问题是本教程没有考虑到基于 exe 的安装。我认为缺少将包含在源代码构建中的文件。我找不到 shared.thrift 。将不得不尝试在某个地方下载它,看看是否能让我走得更远。
    • 刚刚猜测了一个 URL 并找到了 git-wip-us.apache.org/repos/… 。包含此内容的构建解决了问题...事实证明,EXE 没有这些文件,正如您所期望的那样,但本教程没有说明需要下载 both 文件来遵循它Windows exe 路由。
    • 你说得对,我刚刚为此创建了一个ticket。感谢您指出这一点。
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 2013-01-14
    • 1970-01-01
    • 2013-07-14
    • 2014-07-26
    • 2013-08-22
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多