python - Windows安装librdkafka支持Python开发

标签 python windows apache-kafka

一些背景知识:我正在研究我们团队中的其他开发人员将使用的一些 python 模块。每个模块的共同主题是一条或多条消息将发布到 Kafka。我们现在打算使用 Confluent Kafka 客户端。在我们的组织中,我们对 Python 开发还很陌生——我们传统上是一家 .NET 商店。

复杂性:虽然我们创建的代码将在 Linux (rhel 7) 上运行,但大多数开发人员将在 Windows 上完成他们的工作。

因此我们需要在每台开发人员机器上编译的 librdkafka C 库(它有自己的依赖项,其中之一是 OpenSSL)。然后 confluent-kafka 的 pip 安装应该可以正常工作,这意味着我们的软件包的 pip 安装可以正常工作。理论上。

首先,我在我的 Linux 笔记本电脑 (Arch) 上进行了安装。我知道我已经有了 OpenSSL 和其他可用的 zip lib 依赖项,所以这个过程很轻松:

  • git 克隆 librdkafka 仓库
  • 根据自述文件配置、制作和安装
  • pip 安装 confluent-kafka
  • 完成

librdkafka 安装到 /usr/local:

/usr/local/lib/librdkafka.a
/usr/local/lib/librdkafka++.a
/usr/local/lib/librdkafka.so -> librdkafka.so.l
/usr/local/lib/librdkafka++.so -> librdkafka++.so.l
/usr/local/lib/librdkafka.so.l
/usr/local/lib/librdkafka++.so.l
/usr/local/lib/pkgconfig/rdkafka.pc
/usr/local/lib/pkgconfig/rdkafka++.pc
/usr/local/include/librdkafka/rdkafkacpp.h
/usr/local/include/librdkafka/rdkafka.h

现在是痛苦的部分,让它在 Windows 上运行:

  • 安装precompiled OpenSSL
  • git 克隆 librdkafka 仓库
  • 在 VS2015 中打开
  • 通过 NuGet 安装 libz
  • 构建解决方案
  • 安装到哪里???

这就是我卡住的地方。 Windows 7/8/10 机器上的标准安装是什么样的?

我从构建输出中得到以下内容,但不知道应该去哪里才能使 pip install confluent-kafka “正常工作”:

/librdkafka/win32/Release/librdkafka.dll
/librdkafka/win32/Release/librdkafka.exp
/librdkafka/win32/Release/librdkafka.lib
/librdkafka/win32/Release/librdkafkacpp.dll
/librdkafka/win32/Release/librdkafkacpp.exp
/librdkafka/win32/Release/librdkafkacpp.lib
/librdkafka/win32/Release/zlib.dll
<and the .h files back in the src>

关于安装位置有什么建议吗?

最佳答案

我不确定在 Windows 上安装的理想位置是什么,但我运行了以下测试并取得了一些成功。

我将输出和 header 复制到 C:\test\libC:\test\include,然后使用以下选项运行 pip 安装:

 pip install --global-option=build_ext --global-option="-LC:\test\lib" --global-option="-IC:\test\include" confluent-kafka

不幸的是,这不太奏效,因为 confluent-kafka 设置目前不支持 Windows:https://github.com/confluentinc/confluent-kafka-python/issues/52#issuecomment-252098462

关于python - Windows安装librdkafka支持Python开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901163/

相关文章:

python - 将所有 stdout/stderr 全局重定向到记录器

python - 使用多处理将数据写入hdf文件

windows - 使用带有 logstash 和 Windows 文件的 grok 过滤器的问题

apache-kafka - Kafka - 处理消费者缓慢的最佳实践。如何实现更多的并行性?

apache-kafka - 提交失败异常 : Commit cannot be completed due to group rebalance

python - 使用 PyParsing 的两个标记之间的字符串

python - 整数线性最小二乘法

windows - FFmpeg:从我的函数中获得更好的编码

windows - 是否有任何 XSLT 处理命令行工具?

java - 卡夫卡收到错误 Bootstrap 服务器中没有给出可解析的 Bootstrap 网址