【问题标题】:Installing librdkafka on Windows to support Python development在 Windows 上安装 librdkafka 以支持 Python 开发
【发布时间】:2017-02-15 12:05:39
【问题描述】:

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

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

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

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

  • git clone librdkafka repo
  • 按照自述文件进行配置、制作和安装
  • pip install 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 clone librdkafka repo
  • 在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>

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

【问题讨论】:

    标签: python windows apache-kafka


    【解决方案1】:

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

    我将输出和标题复制到 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

    【讨论】:

      【解决方案2】:

      这是一个老问题,但似乎仍然没有简单的答案。此外,Confluent 似乎太忙了,无法在 Windows 支持上工作......

      几周前我也有同样的头痛,经过一些研究,我设法让它在 Windows 上为我工作。我记录了我的发现并将一个预编译的库上传到我的 Git,请检查它是否有帮助。 :D

      https://github.com/MichaelZhangCA/confluent-kafka-python

      我的环境是 Python 3.6 64 位版本,但理想情况下,如果您采用相同的方法,它也应该适用于 32 位。

      【讨论】:

        【解决方案3】:

        我假设您已成功遵循上一篇文章中 MichaelZhangCA (https://github.com/MichaelZhangCA/confluent-kafka-python/) 的说明。

        如果你这样做了,这些可能是最后执行的两个命令:

        ::Install confluent-kafka
        cd C:\confluent-kafka-python\confluent-kafka-python-0.11.4
        python setup.py install
        

        如果正确,这些 DLL 是在 C:\confluent-kafka-python\librdkafka-reference\release\ 下创建的。

        您所要做的就是将它们复制到 Widnows PATH 中已经存在的目录中。

        例如,我使用 Anaconda 5.2 For Windows 和 python 3.6。我的 Anaconda Prompt 在 PATH 中有一个空目录,所以我将那些 DLL 复制到那里:

        ::Anaconda Prompt - copy DLLs to a directory already in PATH
        mkdir %CONDA_PREFIX%\Library\usr\bin
        copy C:\confluent-kafka-python\librdkafka-reference\release %CONDA_PREFIX%\Library\usr\bin
        

        如果您不使用 Anaconda,只需将这些 DLL 复制到 Windows PATH 中的任何其他目录即可。您也可以将它们留在C:\confluent-kafka-python\librdkafka-reference\release 中,并将此目录添加到 PATH。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-23
          • 2013-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-26
          • 2015-12-13
          相关资源
          最近更新 更多