2010-08-23 70 views
6

这是我在Apache的错误日志中出现错误:无法获得的mod_wsgi和Apache Django的工作

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

这是我.wsgi文件,每个this blog post

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() 

我已经双重和三重检查了路径名,并且确实是我的项目文件的路径。我一直试图让这个工作几个小时,并做了大量的搜索。我在这里问这是我的最后一招。我很绝望!

编辑:我知道,在这里也有类似的问题在SA,我已经通过最阅读所有这些,都无济于事

+0

有一个公平的机会,使Django能够找到你的设置文件,但它不能导入它。 Django无论出于何种原因都无法导入设置文件时会出现此错误。所以试着在你的'.wsgi'文件中添加一个'import settings'。 – Wolph 2010-08-23 00:57:55

+0

你是否100%肯定你没有在路径或任何东西中输入错字?你实际上在'/ home/wot/django-projects/aedo'目录中有'settings.py'吗?一方或另一方必须是虚假的。 – Wolph 2010-08-23 01:36:26

+0

他确实已经在他的WSGI文件中有'导入设置'。他不依赖于DJANGO_SETTINGS_MODULE环境变量方法。 – 2010-08-23 01:51:28

回答

2

什么是运行输出:

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

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

同时还要注意说话和看在提及幻灯片:

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

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

+0

是的这些文件对所有用户都是可读的和可执行的。谢谢你会的 – skroth 2010-08-23 03:17:49

2

当你把它不起作用:

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() 

在你的django.wsgi文件中?

+2

这不会工作,因为您将站点目录添加到sys.path而不是父目录。 – 2010-08-23 01:52:03

+0

@Graham Dumpleton - 错误,已更正。这是因为我使用pydev复制了我的一个项目,通常我有2倍的目录(项目名称为1,src为1),比如'.../django-projects/aedo/aedo/files.py' – laurent 2010-08-23 04:40:47

2

尝试改变

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

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

其实我太得到这个错误,我做以上。我也改变

ROOT_URLCONF = 'appname.urls' 

ROOT_URLCONF = 'urls' 

我希望你的settings.py是在同一个目录作为该项目的WSGI文件。

0

对我来说,我有奇怪的导入问题,Python声称Django无法导入Site ...因为我的安装从一个纯粹的“python runserver ...”到一个WSGI环境,所以权限实际上是一个问题。

惊讶,因为我甚至没有更改权限上django.contrib.site包,只是该项目的所有文件为755