Hi Graham, One more possibility I think is www-data, the worker process, doesn't get the PYTHONPATH variable.
root 2425 1 0 18:35 ? 00:00:00 /usr/sbin/apache2 -k start www-data 2428 2425 0 18:35 ? 00:00:00 /usr/sbin/apache2 -k start www-data 2429 2425 0 18:35 ? 00:00:00 /usr/sbin/apache2 -k start www-data 2430 2425 0 18:35 ? 00:00:00 /usr/sbin/apache2 -k start young 2793 2755 0 18:52 pts/2 00:00:00 grep --color=auto apache2 In that case, is there any way to solve the problem? Thanks, Young On Dec 28, 6:46 pm, Young <[email protected]> wrote: > Hi Graham, > > Thanks a lot for the quick help. However it still fails even though I > tried every possible combinations. I also checked the permissions but > I couldn't find any wrong permission settings. > > From your comment below, I now guess my problem is due to the > different environment variable settings between the root account and > my account. As I mentioned before my service runs well with django dev > server. I think when I run django dev server, it runs with my > environment variable settings including PYTHONPATH which includes > mysite and mysite's parent directory. However when I run apache2 > server, it runs with the root account's environment variable settings > which doesn't include PYTHONPATH. > > I tried to insert mysite(/dfs/mysite) and mysite's parent directory(/ > dfs) into the root account's environment variable settings by adding > "export PYTHONPATH=$PYTHONPATH:/dfs:/dfs/mysite" in the file /etc/ > profile and /etc/bashrc, but it didn't work. They didn't appear when I > checked with "import sys" and "print sys.path" in the shell executed > by the command "sudo python". > > I also tried your manual which says how to add path in the django.wsgi > script. When I printed sys.path in the script, the result included > mysite and mysite's parent directory, but it also failed with "No > module named sphene.community". One thing very weird is importing > works without any error when I type the content in the wsgi script > line by line in the python shell. > > My apache2 version is: > Server version: Apache/2.2.16 (Ubuntu) > Server built: Nov 18 2010 21:18:34 > > And my wsgi script is: ====================================== > import sys > > path1 = '/dfs' > if path1 not in sys.path: > sys.path.append(path1) > > path2 = '/dfs/mysite' > if path2 not in sys.path: > sys.path.append(path2) > > print sys.path > import settings > > import django.core.management > django.core.management.setup_environ(settings) > utility = django.core.management.ManagementUtility() > command = utility.fetch_command('runserver') > > import sphene.community > 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() > =========================================================== > > Thanks for reading long email and I really appreciate your help. > > Young > > On Dec 27, 6:53 pm, Graham Dumpleton <[email protected]> > wrote: > > > > > > > > > Whoops. I should have said to add it after any > > sys.path/site.addsitedir stuff you do to set up Python module search > > path. > > > If when you restart Apache and try to access application, if the > > loading of the WSGI script file fails on that import, then it means > > that you have a sys.path or permissions issue. > > > So, just before the import line, if it still fails, add: > > > import sys > > print >> sys.stderr, "PYTHONPATH", sys.path > > > Then get what is printed from Apache error log file and double check > > whether parent directory where 'sphene' is installed is listed in > > sys.path. > > > If it isn't, the parent directory where 'sphene' is installed needs to > > be added, or you need to fix up how it is being added. > > > Find out where 'sphene' is installed by running command line Python and > > doing: > > > import sphene > > print sphene.__file__ > > > The parent directory then is: > > > import os > > print os.path.dirname(os.path.dirname(sphene.__file__)) > > > If the directory is listed in sys.path, then it is going to be a > > permissions issue. > > > That is, the user that Apache is running your code as doesn't have > > permission to access some directory down to where sphene is installed, > > or perhaps even the code of sphene itself. > > > Graham > > > On 28 December 2010 13:36, Young <[email protected]> wrote: > > > > Hi Graham, > > > > Thanks for the help. However the problem still occurs even though I > > > added the line in the script. > > > > Young > > > > On Dec 26, 5:44 pm, Graham Dumpleton <[email protected]> > > > wrote: > > >> At the start of the WSGI script file add: > > > >> import sphene.community > > > >> Does that work and then cause latter problem to go away or does it fail. > > > >> Graham > > > >> On 25 December 2010 00:23, Young <[email protected]> wrote: > > > >> > Hi, > > > >> > I've been configuring mod-wsgi for days but with no luck. My site runs > > >> > well on Django dev server but doesn't work on Apache/mod_wsgi. I read > > >> > Graham's nice blog post and it was very helpful to understand how > > >> > Django dev server internally works. However it couldn't help to solve > > >> > my problem as mine is somewhat complicated. > > > >> > My site consists of 3 parts: my app, SCT app(wiki/forum, > > >> >http://sct.sphene.net/wiki/show/Start/) and jpype module. Though my > > >> > code solely runs well on Apache/mod_wsgi but it doesn't with other > > >> > modules. > > > >> > As my site runs well on Django dev server and both errors below are > > >> > something like "class/module not found", I guess the error is related > > >> > with path problems. However when I printed sys.path, it contained both > > >> > '/dfs/mysite' and '/dfs'. > > > >> > Any comments will be appreciated. Thanks in advance and Merry > > >> > Christmas:) > > > >> > -Young > > > >> > My machine is: > > >> > ############################################################### > > >> > - Ubuntu server 10.10 64bit > > >> > - Using DFS > > >> > - Python 2.6.6 > > >> > - Django 1.2.3 > > >> > - mod_wsgi 3.3 > > > >> > Simplified directory structure is: > > >> > ################################################# > > >> > /dfs/mysite/myapp : directory for my app > > >> > /dfs/mysite/apache : directory for mod_wsgi script > > >> > /dfs/mysite/sphene : director for SCT app > > >> > /dfs/mysite/build/classes/com/mysite/myjava/Abc.Class : directory for > > >> > JAVA class running on jpype > > > >> > /etc/apache2/httpd.conf is: > > >> > ##################################################### > > >> > Alias /site_media/ /dfs/mysite/site_media/ > > >> > <Directory /dfs/mysite/site_media> > > >> > Order deny,allow > > >> > Allow from all > > >> > </Directory> > > > >> > LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so > > >> > WSGIScriptAlias / /dfs/mysite/apache/django.wsgi > > >> > <Directory /dfs/mysite/apache> > > >> > Order deny,allow > > >> > Allow from all > > >> > </Directory> > > > >> > /dfs/mysite/apache/django.wsgi is: > > >> > ############################################### > > >> > import sys > > >> > path1 = '/dfs' > > >> > if path1 not in sys.path: > > >> > sys.path.append(path1) > > >> > path2 = '/dfs/mysite' > > >> > if path2 not in sys.path: > > >> > sys.path.append(path2) > > > >> > 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() > > > >> > Jpype error is: > > >> > ################################################################ > > >> > java.lang.ExceptionPyRaisable at /service/abc/ > > >> > java.lang.Exception: Class com.mysite.myjava.Abc not found > > > >> > The Apache error.log is: > > >> > ######################################################### > > >> > [Fri Dec 24 04:25:59 2010] [notice] Apache/2.2.16 (Ubuntu) mod_wsgi/ > > >> > 3.3 Python/2.6.6 configured -- resuming normal operations > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] mod_wsgi > > >> > (pid=6180): Target WSGI script '/dfs/mysite/apache/django.wsgi' cannot > > >> > be loaded as Python module. > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] mod_wsgi > > >> > (pid=6180): Exception occurred processing WSGI script '/dfs/mysite/ > > >> > apache/django.wsgi'. > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] Traceback > > >> > (most recent call last): > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] File "/dfs/ > > >> > mysite/apache/django.wsgi", line 18, in <module> > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] > > >> > command.validate() > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] File "/usr/ > > >> > local/lib/python2.6/dist-packages/django/core/management/base.py", > > >> > line 249, in validate > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] > > >> > num_errors = get_validation_errors(s, app) > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] File "/usr/ > > >> > local/lib/python2.6/dist-packages/django/core/management/ > > >> > validation.py", line 28, in get_validation_errors > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] for > > >> > (app_name, error) in get_app_errors().items(): > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] File "/usr/ > > >> > local/lib/python2.6/dist-packages/django/db/models/loading.py", line > > >> > 146, in get_app_errors > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] > > >> > self._populate() > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] File "/usr/ > > >> > local/lib/python2.6/dist-packages/django/db/models/loading.py", line > > >> > 61, in _populate > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] > > >> > self.load_app(app_name, True) > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] File "/usr/ > > >> > local/lib/python2.6/dist-packages/django/db/models/loading.py", line > > >> > 76, in load_app > > >> > [Fri Dec 24 12:26:10 2010] [error] [client 76.169.74.121] > > >> > app_module = import_module(app_name) > > >> > [Fri Dec 24 12:26:10 > > ... > > read more » -- You received this message because you are subscribed to the Google Groups "modwsgi" 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/modwsgi?hl=en.
