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

无法启动Daphne服务器:ModuleNotFoundError: No module named 'apps'

Daphne启动报错ModuleNotFoundError: No module named 'apps'解决方法

问题重现

启动Daphne时出现以下错误:

Traceback (most recent call last):
  File "/usr/local/bin/daphne", line 8, in <module>
    sys.exit(CommandLineInterface.entrypoint())
  File "/usr/local/lib/python3.8/site-packages/daphne/cli.py", line 171, in entrypoint
    cls().run(sys.argv[1:])
  File "/usr/local/lib/python3.8/site-packages/daphne/cli.py", line 233, in run
    application = import_by_path(args.application)
  File "/usr/local/lib/python3.8/site-packages/daphne/utils.py", line 12, in import_by_path
    target = importlib.import_module(module_path)
  File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'apps'

相关配置文件:

  • /home/prassel/apps/asgi.py:
django_asgi_app = get_asgi_application()

application = ProtocolTypeRouter(
    {
        "http": django_asgi_app,
        "websocket": URLRouter([path('ws/notifications/', NotificationConsumer.as_asgi())]),
    }
)
  • docker-compose.yml中的daphne服务:
daphne:
  platform: linux/amd64
  build:
    context: .
    dockerfile: Dockerfile.daphne
  command: 'sh -c "daphne -b 0.0.0.0 -p 8000  apps.asgi:application"'
  restart: always
  working_dir: /home/prassel
  • Dockerfile.daphne:
FROM python:3.8-buster

ENV PYTHONUNBUFFERED 1

ARG REQUIREMENTS_FILE

WORKDIR /home/prassel/

RUN pip install daphne

问题原因

  1. 容器内无项目代码:docker-compose未配置本地代码挂载,容器内/home/prassel目录为空,找不到apps模块。
  2. Python路径未配置:即使有代码,项目根目录可能不在Python的sys.path中,导致无法导入apps模块。
  3. 依赖缺失:仅安装了daphne,缺少Django及项目其他依赖。
  4. asgi.py导入不完整:未配置Django环境变量及必要的导入语句。

解决步骤

1. 配置Docker代码挂载

修改docker-compose.yml,添加volumes将本地代码挂载到容器内:

daphne:
  platform: linux/amd64
  build:
    context: .
    dockerfile: Dockerfile.daphne
  command: 'sh -c "daphne -b 0.0.0.0 -p 8000 apps.asgi:application"'
  restart: always
  working_dir: /home/prassel
  volumes:
    - ./:/home/prassel  # 本地当前目录映射到容器内项目目录

2. 完善asgi.py配置

在apps/asgi.py开头添加Python路径配置和Django环境变量:

import os
import sys
from django.core.asgi import get_asgi_application
from django.urls import path
# 替换为你的consumer实际路径
from apps.your_app.consumers import NotificationConsumer

# 将项目根目录添加到Python搜索路径
sys.path.append('/home/prassel')
# 设置Django配置模块,替换为你的项目名(比如manage.py所在目录的名称)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

django_asgi_app = get_asgi_application()

application = ProtocolTypeRouter(
    {
        "http": django_asgi_app,
        "websocket": URLRouter([path('ws/notifications/', NotificationConsumer.as_asgi())]),
    }
)

3. 完善Dockerfile安装依赖

修改Dockerfile.daphne,安装Django及项目依赖:

FROM python:3.8-buster

ENV PYTHONUNBUFFERED 1

WORKDIR /home/prassel/

# 优先使用requirements.txt安装依赖(如果项目有该文件)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 如果没有requirements.txt,直接安装必要依赖
# RUN pip install django daphne

4. 验证项目结构

确保项目根目录/home/prassel下存在manage.py,且apps是其中一个合法的Django应用(包含__init__.py文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:48:08