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

Ubuntu 24.04下Apache2+mod_wsgi部署Django时无法找到settings模块的问题

Ubuntu 24.04下Apache2+mod_wsgi部署Django时无法找到settings模块的问题

老哥,我看了你遇到的问题,毕竟用了二十多年的mod_wsgi/Django/Apache,这次Ubuntu 24.04上的坑确实有点烦。从报错里的ModuleNotFoundError: No module named 'ana_access'就能看出来,核心问题是Python的模块搜索路径里没有包含你的Django项目根目录,导致它找不到ana_access这个包(也就是settings所在的目录)。

先理清楚你的目录结构:
你的wsgi.py在/home/peter/django-apps/anaaccess/anaaccess/ana_access/wsgi.py,而ana_access这个包的父目录是/home/peter/django-apps/anaaccess/anaaccess/——这个目录目前不在Python的sys.path里,所以Python找不到这个模块。

给你几个具体的解决步骤:

1. 修改wsgi.py,添加项目根目录到Python路径

打开你的wsgi.py文件,在最开头添加代码把项目根目录加入sys.path,推荐用动态路径的方式(避免硬编码路径,后续迁移更方便):

import os
import sys

# 动态获取包含ana_access包的父目录
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_root)

# 下面是你原来的代码
import django
from django.core.wsgi import get_wsgi_application

os.environ["DJANGO_SETTINGS_MODULE"] = "ana_access.settings"
application = get_wsgi_application()

如果动态路径的方式你觉得麻烦,也可以直接硬编码路径:

import sys
sys.path.append('/home/peter/django-apps/anaaccess/anaaccess')

2. 检查Apache的目录权限

确保Apache的运行用户(通常是www-data)有读取整个项目目录的权限,你可以执行以下命令调整权限:

sudo chown -R www-data:www-data /home/peter/django-apps/anaaccess/anaaccess/
sudo chmod -R 755 /home/peter/django-apps/anaaccess/anaaccess/

3. 重启Apache服务

修改完配置和代码后,一定要重启Apache让改动生效:

sudo systemctl restart apache2

为什么这次会出问题?

Ubuntu 24.04搭配的Apache 2.4.58和Python 3.12,在mod_wsgi的路径处理上可能和你之前用的版本有差异——虚拟环境只是帮你管理依赖包,但项目本身的模块路径不会被自动加入到Python的搜索路径里,所以需要手动添加。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:10:05