Hi,
I'm sure this is a properly neophyte post, but I'm stumped and would
really appreciate some guidance. I am trying to serve a site under
apache2 using django. I have apache2 and mod_python installed (setup
below). I have followed the instructions at
http://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from=olddocs
about configuring apache. My apache2.conf contains:
<Location "/WORD">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE WORD.settings
PythonDebug On
PythonPath "['/home/matthew/current/django','/home/matthew/current/
django/WORD'] + sys.path"
</Location>
When I navigate to localhost/WORD/publications (where my app is) I
see:
[START ERROR]
Mod_python error: "PythonHandler django.core.handlers.modpython"
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line
299, in HandlerDispatch
result = object(req)
File "/var/lib/python-support/python2.4/django/core/handlers/
modpython.py", line 163, in handler
return ModPythonHandler()(req)
File "/var/lib/python-support/python2.4/django/core/handlers/
modpython.py", line 125, in __call__
if settings.ENABLE_PSYCO:
File "/var/lib/python-support/python2.4/django/conf/__init__.py",
line 27, in __getattr__
self._import_settings()
File "/var/lib/python-support/python2.4/django/conf/__init__.py",
line 53, in _import_settings
self._target = Settings(settings_module)
File "/var/lib/python-support/python2.4/django/conf/__init__.py",
line 81, in __init__
raise EnvironmentError, "Could not import settings '%s' (Is it on
sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE,
e)
EnvironmentError: Could not import settings 'WORD.settings' (Is it on
sys.path? Does it have syntax errors?): No module named WORD.settings
[END ERROR]
So apache2 is handing the request on to django via mod_python
appropriately, but django is failing to load the settings module. To
check that it has placed the module parent directory on the sys.path,
I added to the error message in /var/lib/python-support/python2.4/
django/conf/__init__.py like this:
[START CODE]
raise EnvironmentError, "Could not import settings '%s' (Is it on
sys.path? Does it have syntax errors?): %s\n\nsys.path=%s" %
(self.SETTINGS_MODULE, e,sys.path)
[END CODE]
which produced:
[START ERROR]
EnvironmentError: Could not import settings 'WORD.settings' (Is it on
sys.path? Does it have syntax errors?): No module named WORD.settings
sys.path=['/home/matthew/current/django', '/home/matthew/current/
django/WORD', '/usr/lib/python24.zip', '/usr/lib/python2.4', '/usr/lib/
python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/
python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages', '/
usr/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages/
Numeric', '/usr/lib/python2.4/site-packages/cairo', '/var/lib/python-
support/python2.4', '/var/lib/python-support/python2.4/gtk-2.0', '/usr/
lib/site-python']
[END ERROR]
Which confirms the appropriate directories are visible. To check that
settings.py has no syntax errors, I ran the interpreter and executed
the following:
[START INTERPRETER]
$ python
Python 2.4.4 (#2, Apr 15 2008, 23:43:20)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path = ['/home/matthew/current/django'] + sys.path
>>> import WORD.settings
>>> WORD.settings.INSTALLED_APPS
('django.contrib.auth', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sites',
'django.contrib.admin', 'django.views.static', 'WORD.publications')
[END INTERPRETER]
so it loads ok with a normal import, but reading /var/lib/python-
support/python2.4/django.conf/__init__.py, the exception is raised in
__import__(), like this:
[START CODE]
try:
mod = __import__(self.SETTINGS_MODULE, '', '', [''])
except ImportError, e:
raise EnvironmentError, "Could not import settings '%s' (Is it on
sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE,
e)
[END CODE]
so I also ran that command in the interpeter:
[START INTERPRETER]
>>> mod = __import__('WORD.settings', '', '', [''])
>>> mod
<module 'WORD.settings' from '/home/matthew/current/django/WORD/
settings.pyc'>
>>> WORD.settings.INSTALLED_APPS
('django.contrib.auth', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sites',
'django.contrib.admin', 'django.views.static', 'WORD.publications')
[END INTERPETER]
and it works fine in this instance. I'm sure that I'm missing
something blindingly obvious, but if someone could please point it out
to me I'd be really grateful.
I am using:
Debian Stable (Etch)
Python 2.4.4-2
Django 0.95.1-1etch2
Apache2 2.2.3-4+etch6
mod_python 3.2.10-4
Many thanks in advance,
Matthew
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---