无法让mod_wsgi和Apache与Django一起工作

6 投票
4 回答
2416 浏览
提问于 2025-04-16 03:09

这是我在Apache错误日志中看到的错误信息:

[Sun Aug 22 16:52:06 2010] [error] [client 127.0.0.1] ImportError: No module named settings

这是我的.wsgi文件,参考了这篇博客

import sys

sys.path.insert(0, '/home/wot/django-projects/aedo')
import settings
import django.core.management
django.core.management.setup_environ(settings)
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')
command.validate()
import django.conf
import django.utils

django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

我已经仔细检查了路径,确认这确实是我项目文件的路径。我已经尝试了好几个小时想让这个工作正常,还在网上查了很多资料。现在我在这里求助,真的是走投无路了!

补充:我知道这里有类似的问题,我也看过大部分,结果还是没有解决。

4 个回答

2

试着把

os.environ['DJANGO_SETTINGS_MODULE'] = 'aedo.settings'

改成

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

其实我也遇到过这个错误,我按照上面的做法进行了修改。我还把

ROOT_URLCONF =  'appname.urls' 

改成了

ROOT_URLCONF =  'urls' 

希望你的settings.py文件和这个项目的wsgi文件在同一个文件夹里。

2

你在你的django.wsgi文件里放这个:

import os, sys
sys.path.append('/usr/local/django')    # obs: path to django
sys.path.append('/home/wot/django-projects/aedo')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

为什么不管用呢?

2

运行以下代码会得到什么结果:

ls -las /home/wot/django-projects/aedo/

Apache运行的用户是否可以读取这个目录和所有文件?如果不能,你可能会遇到那个错误。

另外,可以看看下面的讲座和幻灯片:

http://blog.dscpl.com.au/2010/06/sydney-pycon-modwsgi-talk-slides.html

因为它进一步讨论了权限的问题。

撰写回答