3
votes

I installed wsgi (mod_wsgi), and could run the simple application by calling http://localhost/myapp.

WSGIScriptAlias /myapp /Library/WebServer/Documents/wsgi/scripts/myapp.wsgi
def 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]

How can I run django example?

I found this example that has the simple example.

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'my.settings' # ???

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
mysite/
    __init__.py
    manage.py
    settings.py
    urls.py

Django generated the three python files, and I see a settings.py that has setup info. The project is in '/ABC/DEF/mysite' directory.

I modified the code as follows, and named it 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()

Even though I could run the original django example from the tutorial that uses "python manage.py runserver 8080", I got an error running the modified example with mod_wsgi.

The apache2/log file has the following.

[Wed Nov 24 09:02:41 2010] [error] [client 127.0.0.1] ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings

As far as I know, the directory/project name is mysite, and it has the settings.py. And the directory is in the sys.path. So, I don't know why mysite.settings is not found.

What's wrong with my myapp.wsgi?

SOLVED

The following code works fine. And the other thing that I modified was the django project should not be in my home directory, when I moved the project to www doc directory, everything works fine.

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()
1
"I don't setup the mysite.settings"?Ignacio Vazquez-Abrams
@Ignacio Vazquez-Abrams : I should have written I didn't know how to setup the settings.prosseek
mysite.settings refers to YourProjectName.settings. It's how Python gets what's in your settings.py file.Evan Porter
please post solution as answerwebjunkie

1 Answers

2
votes

What you need to do is add either the project directory or the directory the project is in to sys.path, and then point the settings to mysite.settings if you've done the latter.

EDIT:

"Django settings"

EDIT 2:

How to set the Django settings module

EDIT 3:

The settings module should be the module, not the filename. And if it's 'settings' then you don't need to set it.