python - 运行 thrift 示例时出现 "IndexError: list index out of range"错误

标签 python thrift

我正在尝试运行 thrift tutorial对于 python 。但是当我尝试运行 PythonServer.py 时,出现以下错误:

Traceback (most recent call last):
  File "./PythonServer.py", line 24, in <module>
    sys.path.insert(0, glob.glob('../../lib/py/build/lib*')[0])
IndexError: list index out of range

我该如何解决这个问题?

最佳答案

每个基于 Thrift 的应用程序通常由三个部分组成,这三个部分都是构成一个正常运行的整体所必需的:

  • 从 IDL 文件生成的代码(通过 Thrift 编译器)
  • 适用于您的特定目标语言的 Thrift 运行时库
  • 您编写的用于实现服务器和/或客户端逻辑的代码

无论您是否解压 runtime package来自download section网站的,或克隆 Thrift from source ,您总是会得到类似于此的文件夹结构1):

/
|- lib
|   |- cpp
|   |- java
|   |- py
|   +- ... more languages ...
|   
+- tutorial
    |- cpp
    |- java
    |- py
    +- ... more languages ...

文件夹libtutorial都包含每种语言的子目录。这就是为什么本教程引用了应该容纳 Python Thrift 运行时文件的相对路径的原因。

因此,您要么想要复制相同的文件夹结构(例如,直接使用包中的教程代码),要么更改目录引用以指向 Python Thrift 运行时文件实际所在的文件夹。


1) 实际上,您会得到更多的文件夹,但这些文件夹在这里并不重要,因此我们只是忽略它们。

关于python - 运行 thrift 示例时出现 "IndexError: list index out of range"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871659/

相关文章:

python - 运行这门课的正确方法是什么?

java - PHP 客户端通过 Thrift 连接到 Java 服务是否需要完整的 J2EE 服务器?

c++ - Thrift 与 Protocol Buffer

c# - 在 Apache Thrift C# 中将流作为属性发送

c++ - 与 Thrift Hook

java - 如何减少节俭膨胀

python - 使用 Django 的 m2m_changed 修改保存的内容 pre_add

python - 为什么多进程池比 for 循环慢?

python - 为什么这不能用作数组成员测试?

python - Airflow 在 1 分钟后终止了我的任务