一点背景:我正在研究我们团队中其他开发人员将使用的一些python模块。每个模块的一个共同主题是将向Kafka发布一条或多条消息。我们此时打算使用Confluent Kafka客户端。我们在组织中对python开发很新 - 我们传统上一直是.NET商店。
复杂性:虽然我们创建的代码将在Linux(rhel 7)上运行,但大多数开发人员都将在Windows上开展工作。
所以我们需要在每个开发者机器上编译的librdkafka C库(它有自己的依赖项,其中一个是OpenSSL)。然后一个confluent-kafka的pip安装应该正常工作,这意味着我们的包的pip安装将起作用。理论上
首先,我在我的Linux笔记本电脑(Arch)上安装了。我知道我已经有了OpenSSL和其他zip lib依赖项,所以这个过程很简单:
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上运行:
这就是我被困住的地方。 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>
有关安装位置的任何建议吗?
答案 0 :(得分:1)
我不确定在Windows上安装的理想位置在哪里,但我运行了以下测试并取得了一些成功。
我将输出和标题复制到C:\test\lib
和C:\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
答案 1 :(得分:0)
这是一个古老的问题,但似乎仍然不容易回答。 Confluent似乎太忙了,无法在Windows上支持...
几周前,我有同样的头痛,经过一些研究,我设法让它在Windows上运行。我记录了我的发现并将预编译的库上传到我的Git,请检查一下它是否有帮助。 :dhttps://github.com/MichaelZhangCA/confluent-kafka-python
我的环境是Python 3.6 64位版本,但理想情况下,如果您采用相同的方法,它也应该适用于32位。
答案 2 :(得分: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\
下创建的。
您所要做的就是将它们复制到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。