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

部署Django应用至DigitalOcean时遇ModuleNotFoundError问题求助

Django部署DigitalOcean时ModuleNotFoundError问题修复

问题描述

通过wsgi.py和Dockerfile部署Django应用到DigitalOcean,构建成功但部署阶段报错,提示ModuleNotFoundError: No module named 'users'。使用manage.py startapp创建了users和documents应用,推测是路径配置问题导致INSTALLED_APPS中的应用无法被识别。

错误日志

[2022-07-31 05:49:23]   File "/code/scraft-server/wsgi.py", line 14, in <module>
[2022-07-31 05:49:23]     from configurations.wsgi import get_wsgi_application  # noqa
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/configurations/wsgi.py", line 8, in <module>
[2022-07-31 05:49:23]     application = get_wsgi_application()
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[2022-07-31 05:49:23]     django.setup(set_prefix=False)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
[2022-07-31 05:49:23]     apps.populate(settings.INSTALLED_APPS)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
[2022-07-31 05:49:23]     app_config = AppConfig.create(entry)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/apps/config.py", line 223, in create
[2022-07-31 05:49:23]     import_module(entry)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
[2022-07-31 05:49:23]     return _bootstrap._gcd_import(name[level:], package, level)
[2022-07-31 05:49:23] ModuleNotFoundError: No module named 'users'

文件目录结构

monorepo
├── README.md
├── __init__.py
├── backend-server
│	├── users //(created with startapp)
│	├── documents //(created with startapp)
│	├── config
│	│	├── common.py
│	│	├── local.py
│	│	├── production.py
│	├── ...
├── docker-compose.yml
├── manage.py
├── requirements.txt
├── users
├── urls.py
├── wait_for_postgres.py
└── wsgi.py

相关文件代码

wsgi.py

import os

from configurations.wsgi import get_wsgi_application  # noqa

application = get_wsgi_application()

config.production.py

import os
from .common import Common

class Production(Common):
    INSTALLED_APPS = (
        # ...
        # My apps
        "users",
        "document",
        # etc
        "corsheaders",
        "gunicorn",
    )
    SECRET_KEY = os.getenv("DJANGO_SECRET_KEY")
    # all other configs are set inside config.common.py

DockerFile

FROM python:3.8
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SETTINGS_MODULE backend-server.config.production
ENV DJANGO_CONFIGURATION Production

# Allows docker to cache installed dependencies between builds
COPY ./requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Adds our application code to the image
WORKDIR /code/backend-server
COPY backend-server .  
WORKDIR /code

EXPOSE 8000

# Run the production server
CMD newrelic-admin run-program gunicorn --bind localhost:$PORT --access-logfile - backend-server.wsgi:application

问题根源

  1. INSTALLED_APPS路径错误:users和documents应用属于backend-server包的子模块,但配置中直接写"users"、"document"(还存在拼写错误,应为documents),导致Django无法定位模块。
  2. 冗余目录干扰:根目录下存在空的users目录,可能造成路径识别混淆。

修复步骤

1. 修正INSTALLED_APPS配置

修改config/production.py,将应用改为完整的包路径,同时修正拼写错误:

class Production(Common):
    INSTALLED_APPS = (
        # ... 保留原有第三方应用
        # 替换为完整包路径
        "backend-server.users",
        "backend-server.documents",
        "corsheaders",
        "gunicorn",
    )
    # ... 其他配置不变

2. 确保backend-server为有效Python包

检查backend-server目录下是否存在__init__.py文件(空文件即可),如果没有则创建,确保Python能识别该目录为可导入包。

3. 删除冗余目录

删除根目录下的空users目录,避免路径混淆:

rm -rf ./users

4. 验证Docker配置

当前Dockerfile的路径配置是正确的:将backend-server内容复制到/code/backend-server,工作目录设为/code,而/code会被加入Python的sys.path,Django可以正常识别backend-server包。

验证修复

重新构建镜像并部署,若仍有问题,可进入容器验证模块导入:

docker exec -it <容器ID> python
>>> import backend-server.users
>>> import backend-server.documents

无报错则说明路径配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:57:23