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

Django使用mod_wsgi部署生产环境出现500错误提示No module named 'main'

Django mod_wsgi部署ModuleNotFoundError修复方案

问题根因

报错ModuleNotFoundError: No module named 'main'是因为Python运行时的模块搜索路径中未包含你的Django项目根目录,无法识别main包,你当前wsgi.py中已写好的路径添加代码被注释,是直接诱因。

修复步骤

1. 调整wsgi.py配置

取消路径添加代码的注释,建议使用sys.path.insert保证项目根目录优先级最高,修改后完整内容如下:

import os
import sys
from django.core.wsgi import get_wsgi_application
# 路径替换为你自己的Django项目根目录(manage.py所在的目录)
sys.path.insert(0, '/var/www/public_html/main/')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')

application = get_wsgi_application()

2. 校验Apache虚拟主机配置

你的httpd虚拟主机配置需要正确指定WSGI相关参数,参考配置如下:

<VirtualHost *:80>
    ServerName 你的域名或IP
    DocumentRoot /var/www/public_html/main

    WSGIDaemonProcess main python-path=/var/www/public_html/main:/usr/local/lib/python3.6/site-packages
    WSGIProcessGroup main
    WSGIScriptAlias / /var/www/public_html/main/main/wsgi.py

    <Directory /var/www/public_html/main/main>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # 静态文件配置可选
    Alias /static /var/www/public_html/main/static
    <Directory /var/www/public_html/main/static>
        Require all granted
    </Directory>
</VirtualHost>

3. 修复RedHat权限与SELinux配置

RedHat默认开启SELinux,需要授予httpd服务项目目录的访问权限:

# 赋予项目目录httpd可读权限
chcon -R -t httpd_sys_content_t /var/www/public_html/main/
# 如果项目有文件写入需求(如媒体文件上传、缓存写入),额外执行
chcon -R -t httpd_sys_rw_content_t /var/www/public_html/main/

4. 校验项目包结构

确认你的项目根目录结构如下,main包目录下必须存在__init__.py文件才能被Python识别为可导入包:

/var/www/public_html/main/
├── manage.py
└── main/
    ├── __init__.py
    ├── settings.py
    ├── wsgi.py
    └── urls.py

如果缺少__init__.py,手动创建空文件即可:

touch /var/www/public_html/main/main/__init__.py

5. 重启服务生效

所有配置修改完成后重启httpd服务即可:

systemctl restart httpd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:36:03