无法安装 confluence-kafka:“致命错误:librdkafka/rdkafka.h:没有这样的文件或目录”

Jil*_*dga 23 python apache-kafka docker librdkafka confluent-kafka-python

我在项目中使用 confluence-kafka Python 客户端。我正在尝试使用此客户端创建 Docker 映像。

我面临以下错误:-

#11 8.015 [pipenv.exceptions.InstallError]:       In file included from /tmp/pip-install-so_whhii/confluent-kafka_9d9553bf46cf489bb25fcb2ac7698747/src/confluent_kafka/src/Admin.c:17:
#11 8.015 [pipenv.exceptions.InstallError]:       /tmp/pip-install-so_whhii/confluent-kafka_9d9553bf46cf489bb25fcb2ac7698747/src/confluent_kafka/src/confluent_kafka.h:23:10: fatal error: librdkafka/rdkafka.h: No such file or directory
#11 8.015 [pipenv.exceptions.InstallError]:          23 | #include <librdkafka/rdkafka.h>
#11 8.015 [pipenv.exceptions.InstallError]:             |          ^~~~~~~~~~~~~~~~~~~~~~
#11 8.015 [pipenv.exceptions.InstallError]:       compilation terminated.
#11 8.015 [pipenv.exceptions.InstallError]:       error: command '/usr/bin/gcc' failed with exit code 1
#11 8.016 [pipenv.exceptions.InstallError]:       [end of output]
Run Code Online (Sandbox Code Playgroud)

根据我的搜索,它与 librdkafka 的 Apple M1 版本相关。

Joz*_*sky 24

如果您在 M1 上的 Docker 容器内安装 confluence-kafka,对我很有帮助。

RUN apt-get update && \
  apt-get install -y --no-install-recommends gcc git libssl-dev g++ make && \
  cd /tmp && git clone https://github.com/edenhill/librdkafka.git && \
  cd librdkafka && git checkout tags/v1.9.0 && \
  ./configure && make && make install && \
  cd ../ && rm -rf librdkafka
Run Code Online (Sandbox Code Playgroud)


Ven*_*nan 15

请参考这个Github问题。M1 的问题是 Homebrew 安装在不同的位置,因此需要通过在文件中包含这些行来将这些变量添加到环境.zshrc

export C_INCLUDE_PATH=/opt/homebrew/Cellar/librdkafka/1.8.2/include
export LIBRARY_PATH=/opt/homebrew/Cellar/librdkafka/1.8.2/lib
Run Code Online (Sandbox Code Playgroud)

  • 为什么构建 docker 镜像时它很重要?主机平台应该是完全独立的吧? (7认同)

Ant*_*ods 10

Confluence 工程师显然非常关注他们的付费客户,并且在 Python 3.10 发布之后很多很多个月,他们仍然没有发布包含该软件包的二进制文件的 3.10 轮子。

https://github.com/confluenceinc/confluence-kafka-python/issues/1219

你有两个选择。1、运行Python 3.9;2、librdkafka-dev在安装之前通过 apt安装confluent-kafka(对于 debian 基础镜像)。

Apple M1 的问题与此相同 - 即,包含二进制文件的平台没有预构建的轮子,但librdkafka-dev如果您尝试构建amd64Linux 映像,则修复(通过安装)要容易得多。


Vic*_*son 0

为您的 Apple M1预置的二进制轮子confluent-kafka-python似乎不存在。

因此,为了安装该软件包,pip请尝试从源代码构建它本身。但根据您收到的错误,librdkafka似乎没有安装。librdkafka/rdkafka.h: No such file or directory

您可以在此处找到针对不同平台从源代码安装的具体说明。