【发布时间】:2011-05-14 20:41:53
【问题描述】:
我安装了wsgi(mod_wsgi),可以通过调用http://localhost/myapp来运行这个简单的应用程序。
WSGIScriptAlias /myapp /Library/WebServer/Documents/wsgi/scripts/myapp.wsgidef application(environ, start_response):
status = '200 OK'
output = 'Hello World! WSGI working perfectly!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
如何运行 django 示例?
我发现this example 有一个简单的例子。
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'my.settings' # ???
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我的网站/
__init__.py
管理.py
设置.py
网址.py
Django 生成了三个 python 文件,我看到了一个包含设置信息的 settings.py。 该项目位于“/ABC/DEF/mysite”目录中。
我将代码修改如下,并将其命名为 myapp.wsgi。
import os
import sys
sys.path.append('/ABC/DEF/mysite')
sys.path.append('/ABC/DEF')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
即使我可以从 the tutorial 运行使用“python manage.py runserver 8080”的原始 django 示例,但在使用 mod_wsgi 运行修改后的示例时出现错误。
apache2/log 文件有以下内容。
[2010 年 11 月 24 日星期三 09:02:41] [错误] [客户端 127.0.0.1] ImportError:无法导入设置“mysite.settings”(它在 sys.path 上吗?是否有语法错误?):没有命名模块mysite.settings据我所知,目录/项目名称是 mysite,它有 settings.py。并且该目录位于 sys.path 中。所以,我不知道为什么 mysite.settings 没有找到。
我的 myapp.wsgi 有什么问题?
已解决
以下代码可以正常工作。 我修改的另一件事是 django 项目不应该在我的主目录中,当我将项目移动到 www doc 目录时,一切正常。
import os
import sys
mysite = 'SOMEWEHRE/django'
if mysite not in sys.path:sys.path.insert(0,mysite)
mysite = 'SOMEWEHRE/scripts'
if mysite not in sys.path:sys.path.insert(0,mysite)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
【问题讨论】:
-
“我没有设置 mysite.settings”?
-
@Ignacio Vazquez-Abrams :我应该写我不知道如何设置设置。
-
mysite.settings 指的是 YourProjectName.settings。这就是 Python 获取 settings.py 文件中内容的方式。
-
请将解决方案作为答案发布