ModuleNotFoundError:Dockerized Django 应用程序中没有名为“kafka.vendor.six.moves”的模块

Nav*_*ghi 5 python django apache-kafka

我的 Dockerized Django 应用程序遇到问题。我正在使用以下 Dockerfile 来构建我的应用程序:

FROM python:alpine

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SUPERUSER_PASSWORD datahub

RUN mkdir app
WORKDIR /app
COPY ./app .
RUN mkdir -p volumes

RUN apk update
RUN apk add --no-cache gcc python3-dev musl-dev mariadb-dev

RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt

RUN apk del gcc python3-dev musl-dev

CMD python3 manage.py makemigrations --noinput &&\
    while ! python3 manage.py migrate --noinput; do sleep 1; done && \ 
    python3 manage.py collectstatic --noinput &&\
    python3 manage.py createsuperuser --user datahub  --email admin@localhost --noinput;\
    python3 manage.py runserver 0.0.0.0:8000

Run Code Online (Sandbox Code Playgroud)

在我的requirements.txt 文件中:

kafka-python==2.0.2
Run Code Online (Sandbox Code Playgroud)

当我在 Docker 容器内运行应用程序时,遇到以下错误:

ModuleNotFoundError: No module named 'kafka.vendor.six.moves'
Run Code Online (Sandbox Code Playgroud)

完成错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.12/site-packages/kafka/__init__.py", line 23, in <module>
    from kafka.consumer import KafkaConsumer
  File "/usr/local/lib/python3.12/site-packages/kafka/consumer/__init__.py", line 3, in <module>
    from kafka.consumer.group import KafkaConsumer
  File "/usr/local/lib/python3.12/site-packages/kafka/consumer/group.py", line 13, in <module>
    from kafka.consumer.fetcher import Fetcher
  File "/usr/local/lib/python3.12/site-packages/kafka/consumer/fetcher.py", line 19, in <module>
    from kafka.record import MemoryRecords
  File "/usr/local/lib/python3.12/site-packages/kafka/record/__init__.py", line 1, in <module>
    from kafka.record.memory_records import MemoryRecords, MemoryRecordsBuilder
  File "/usr/local/lib/python3.12/site-packages/kafka/record/memory_records.py", line 27, in <module>
    from kafka.record.legacy_records import LegacyRecordBatch, LegacyRecordBatchBuilder
  File "/usr/local/lib/python3.12/site-packages/kafka/record/legacy_records.py", line 50, in <module>
    from kafka.codec import (
  File "/usr/local/lib/python3.12/site-packages/kafka/codec.py", line 9, in <module>
    from kafka.vendor.six.moves import range
ModuleNotFoundError: No module named 'kafka.vendor.six.moves'
Run Code Online (Sandbox Code Playgroud)

我已经尝试过更新 Kafka 包、检查依赖关系并手动安装六个包。然而,问题仍然存在。任何人都可以提供有关如何解决此错误的见解吗?

预先感谢您的帮助!

小智 5

这似乎是一个 Python 3.12 问题,我有同样的错误,但在完全不同的上下文中。

代替 FROM python:alpine

我建议你使用 FROM python:3.11

3.12 仍然很新,有许多项目仍在尝试解决问题。