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

拆分settings.py后Apache+mod_wsgi部署Django项目报错求助

Django+Apache+mod_wsgi部署错误排查(Windows环境)

问题背景

在Windows环境下使用Apache和mod_wsgi部署Django项目,将settings.py拆分为多文件结构后,出现mod_wsgi无法执行WSGI脚本的错误,具体报错指向wsgi.py中的application = get_wsgi_application()语句。

项目结构如下:

- 源码根目录
  - 项目目录
    - apps
    - config
      - settings
        - __init__.py
        - base.py
        - local.py
        - prod.py
    - __init__.py
    - asgi.py
    - urls.py
    - wsgi.py
  - myenv

当前wsgi.py代码:

# project_folder/wsgi.py

import os
from django.core.wsgi import get_wsgi_application
import sys

sys.path.append('C:/Apache24/htdocs/ C:/user/users/desktop/source_root_folder')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project_folder.config.settings'
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_folder.config.settings')


application = get_wsgi_application()

解决方案

1. 修复sys.path的路径格式错误

你在sys.path.append中把两个路径合并到了同一个字符串里,Python无法识别这种格式,需要分开添加:

sys.path.append('C:/user/users/desktop/source_root_folder')
sys.path.append('C:/user/users/desktop/source_root_folder/project_folder')

优先添加源码根目录和项目目录,确保Python能找到project_folder包以及内部的config.settings模块。

2. 确认settings模块的导入逻辑

拆分settings后,config/settings/__init__.py需要明确导入对应环境的配置文件,比如生产环境导入prod.py:

# config/settings/__init__.py
from .prod import *

测试环境则导入local.py,保证DJANGO_SETTINGS_MODULE指向的project_folder.config.settings能正确加载配置。

3. 保证Python环境一致性

mod_wsgi使用的Python版本必须和你的虚拟环境myenv完全一致,否则会出现依赖或模块找不到的问题:

  • 确认Apache的mod_wsgi是针对虚拟环境的Python版本编译的;
  • 在wsgi.py开头添加虚拟环境激活代码:
activate_this = 'C:/user/users/desktop/source_root_folder/myenv/Scripts/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

4. 修正环境变量重复设置

你重复设置了DJANGO_SETTINGS_MODULE,保留一行即可,推荐用setdefault避免意外覆盖:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_folder.config.settings')

5. 检查Apache配置正确性

确保Apache的httpd.conf或虚拟主机配置中,WSGI脚本路径和Python路径设置正确:

WSGIScriptAlias / "C:/user/users/desktop/source_root_folder/project_folder/wsgi.py"
WSGIPythonPath "C:/user/users/desktop/source_root_folder;C:/user/users/desktop/source_root_folder/project_folder"

<Directory "C:/user/users/desktop/source_root_folder/project_folder">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

6. 查看详细错误日志定位问题

如果仍报错,打开Apache错误日志(通常在Apache24/logs/error.log),找到application = get_wsgi_application()对应的具体异常(比如ModuleNotFoundError、ImportError),根据缺失的模块或路径进一步排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:15:46