You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker-Compose启动FastAPI消费者遇ModuleNotFoundError问题求助

解决Docker中运行Python脚本时ModuleNotFoundError: No module named 'core'的问题

出现这个错误的核心原因是Python的模块搜索路径(sys.path)中没有包含项目根目录(/app),导致无法识别同级的core目录。

当你用python consumers/modules_consumer.py直接运行脚本时,Python会自动将脚本所在的目录(/app/consumers)加入sys.path,但不会把当前工作目录(/app)加入。而core目录在/app下,自然无法被识别为可导入模块。

下面是几种可行的解决方案:

方案1:以模块方式运行脚本(推荐)

修改docker-compose中consumer-modules的command,使用-m参数以模块形式启动脚本:

consumer-modules:
    build:
      context: ../app
    volumes:
      - ../app:/app
    depends_on:
      - db
    command: sh -c "python3 -m consumers.modules_consumer"

这种方式会让Python将当前工作目录(/app)加入sys.path,就能正确识别core模块了。

方案2:手动添加项目根目录到sys.path

在modules_consumer.py的开头添加以下代码,强制把项目根目录加入Python的搜索路径:

import sys
from pathlib import Path

# 获取项目根目录(/app)并加入sys.path
sys.path.append(str(Path(__file__).parent.parent))

from core import settings
# 其他代码...

方案3:设置PYTHONPATH环境变量

在Dockerfile或docker-compose中设置PYTHONPATH为项目根目录,确保Python始终能找到该路径下的模块:

方式A:在Dockerfile中添加环境变量

ENV PYTHONUNBUFFERED 1
ENV PYTHONPATH=/app  # 添加这一行

COPY . /app
WORKDIR /app
# 后续原有代码...

方式B:在docker-compose.yaml中添加环境变量

consumer-modules:
    build:
      context: ../app
    volumes:
      - ../app:/app
    depends_on:
      - db
    environment:
      - PYTHONPATH=/app  # 添加这一部分
    command: sh -c "python3 consumers/modules_consumer.py"

内容的提问来源于stack exchange,提问作者serg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:03:08