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

Docker部署Django遇ModuleNotFoundError: No module named 'celery'问题求助

Django + Celery + Docker 出现ModuleNotFoundError: No module named 'celery'的问题解决

问题描述

我已经在本地通过pip install celery安装了Celery,也部署了Redis用于Celery运行。但使用Docker部署Django应用时,执行docker compose up命令出现如下错误:

File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
batch_email-web-1  |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
batch_email-web-1  |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
batch_email-web-1  |   File "/Batch_Email/Batch_Email/__init__.py", line 1, in <module>
batch_email-web-1  |     from .celery import app as celery_app
batch_email-web-1  |   File "/Batch_Email/Batch_Email/celery.py", line 4, in <module>
batch_email-web-1  |     from celery import Celery
batch_email-web-1  | ModuleNotFoundError: No module named 'celery'

此前未安装Celery时,docker compose up可以正常启动Django服务器,请问该错误的原因是什么?如何解决?

错误原因

  • 本地通过pip install celery安装的依赖仅存在于本地Python环境,Docker容器是独立的隔离环境,不会自动继承本地已安装的包。
  • 你修改了Django项目的__init__.py并新增了celery.py文件,引入了Celery依赖,但Docker构建镜像时没有安装该依赖,导致容器启动时无法找到Celery模块。

解决方法

  • 更新项目依赖清单
    将Celery和Redis相关依赖添加到项目的requirements.txt文件中(如果使用其他依赖管理工具如pyproject.toml或Pipfile,需对应更新):

    celery>=5.3.0
    redis>=5.0.0
    
  • 重新构建Docker镜像
    确保你的Dockerfile包含安装依赖的步骤,示例如下:

    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    

    然后执行命令重新构建镜像,确保新依赖被安装到容器环境:

    docker compose build --no-cache
    
  • 验证Docker Compose配置(可选)
    如果你的Celery Worker是独立的服务,需确保Worker服务使用的镜像同样安装了Celery依赖,并且能正确连接到Redis服务。例如在docker-compose.yml中,Worker服务应与Web服务使用相同的镜像或构建配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:35:27