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

Ubuntu部署Django遇ModuleNotFoundError: No module named 'photo_app.wsgi'问题

问题排查方案

核心矛盾分析

你配置的Gunicorn目标是passport_photo_maker.wsgi:application,但报错提示找不到photo_app.wsgi,说明实际执行时Gunicorn被引导去加载photo_app下的wsgi模块,而非你指定的passport_photo_maker模块,重点排查以下几个点:

1. 检查wsgi.py文件内容

打开passport_photo_maker/wsgi.py,确认内容是否为标准Django配置,避免误导入photo_app的wsgi模块:
错误示例:

# 错误写法:误导入photo_app的wsgi模块
from photo_app.wsgi import application

正确写法:

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'passport_photo_maker.settings')
application = get_wsgi_application()

2. 确认systemd服务的WorkingDirectory配置

检查你的gunicorn.service文件,确保WorkingDirectory指向项目根目录(即包含manage.py的目录),示例配置:

[Service]
WorkingDirectory=/var/www/passport_photo_maker
ExecStart=/path/to/your/venv/bin/gunicorn --workers 3 passport_photo_maker.wsgi:application

如果WorkingDirectory设置错误,Gunicorn会在错误路径下查找模块,触发非预期的模块查找逻辑。

3. 验证虚拟环境路径配置

确保systemd服务的ExecStart调用的是项目专属虚拟环境中的Gunicorn,而非系统全局版本。全局环境未安装项目依赖或模块路径关联错误,可能导致模块查找混乱。

4. 检查项目目录结构

确认项目符合Django标准结构,确保配置模块passport_photo_maker包含__init__.py(Python将其识别为可导入模块的标志):

# 正确的项目结构
项目根目录/
├── manage.py
├── passport_photo_maker/  # 配置模块
│   ├── __init__.py
│   ├── settings.py
│   ├── wsgi.py
│   └── urls.py
└── photo_app/  # 业务应用模块
    ├── __init__.py
    ├── models.py
    └── views.py

5. 手动测试Gunicorn启动

在项目根目录下激活虚拟环境,手动执行Gunicorn命令验证:

source /path/to/your/venv/bin/activate
gunicorn passport_photo_maker.wsgi:application

如果手动启动正常,说明问题出在systemd服务配置;如果手动启动也报错,继续排查模块路径或wsgi文件内容。


内容的提问来源于stack exchange,提问作者Gopi Kumar Kaushik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:45:07