在Windows上安装librdkafka以支持Python开发

问题描述 投票:5回答:3

一点背景:我正在研究我们团队中其他开发人员将使用的一些python模块。每个模块的一个共同主题是将向Kafka发布一条或多条消息。我们此时打算使用Confluent Kafka客户端。我们对组织中的python开发很新 - 我们传统上一直是.NET商店。

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

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

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

  • git clone librdkafka repo
  • 根据自述文件进行配置,制作和安装
  • pip install confluent-kafka
  • DONE

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
3个回答
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

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


0
投票

这是一个古老的问题,但似乎仍然不容易回答。 Confluent似乎太忙了,无法在Windows上支持...

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

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

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


0
投票

我假设你已经成功地遵循了上一篇文章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\下创建的。

您所要做的就是将它们复制到Windows“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中。

© www.soinside.com 2019 - 2024. All rights reserved.