Graham, adding the corect sys.path values to WSGI script solved the issue. Yayy!! :)
I owe You (at least) a pint!:) whenever i'm in Autralia, or You are in Lithuania, i hope we can organize the return of the debt :) greetings, to On Jan 22, 12:58 pm, Graham Dumpleton <[email protected]> wrote: > 2010/1/22 toinbis <[email protected]>: > > > > > Graham, > > > thanks a lot for devoting your time and energy to help me (even more > > thanks for mod_wsgi overall!:). > > > Setting correct WSGIPythonExecutable or WSGIPythonHome didn't help. > > > ldd mod_wsgi.so output is > > linux-gate.so.1 => (0x00381000) > > libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00add000) > > libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00a80000) > > libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00110000) > > libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0x00114000) > > libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x001f0000) > > libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00386000) > > libz.so.1 => /lib/libz.so.1 (0x00118000) > > /lib/ld-linux.so.2 (0x00581000) > > > so i've started playing around with setting the PATH and > > LD_LIBRARY_PATH env variables. > > > But as i need to travel a bit tomorow, I'll finish the testing and > > post the results of the PATH and LD_LIBRARY_PATH "method' > > in two days, hope that's fine. > > > thanks again, > > greetings, > > to > > > p.s. this is the bin/python (as said, just a wrapper script), maybe > > it's important as well...: > > Yep. It isn't a real Python installation and you should not be using > it with --with-python for mod_wsgi. Use the normal Python version it > refers to. > > The real problem is likely that you aren't setting sys.path from WSGI > script the same way this custom Python wrapper is doing it. > > So, in your WSGI script file for mod_wsgi, do something like: > > import sys > > sys.path[0:0] = [ > '/home/toinbis/Desktop/programming/project/src', > '/home/toinbis/Desktop/programming/project/eggs/Django-1.1.1- > py2.6.egg', > '/home/toinbis/Desktop/programming/project/eggs/MySQL_python-1.2.3c1- > py2.6-linux-i686.egg', > '/home/toinbis/Desktop/programming/project/eggs/setuptools-0.6c11- > py2.6.egg', > '/home/toinbis/Desktop/programming/project/parts/djangosphinxgit', > '/home/toinbis/Desktop/programming/project/parts/sqlalchemyhg/lib', > '/home/toinbis/Desktop/programming/project/parts/svnapps/ > sphinxsearchtrunk/api', > '/home/toinbis/Desktop/programming/project/src/tsd', > ] > > at the start. > > Graham > > > #!/usr/bin/python > > > import sys > > > try: > > if sys.argv[1] == '-u': > > sys.argv.remove('-u') > > except: > > pass > > > sys.path[0:0] = [ > > '/home/toinbis/Desktop/programming/project/src', > > '/home/toinbis/Desktop/programming/project/eggs/Django-1.1.1- > > py2.6.egg', > > '/home/toinbis/Desktop/programming/project/eggs/MySQL_python-1.2.3c1- > > py2.6-linux-i686.egg', > > '/home/toinbis/Desktop/programming/project/eggs/setuptools-0.6c11- > > py2.6.egg', > > '/home/toinbis/Desktop/programming/project/parts/djangosphinxgit', > > '/home/toinbis/Desktop/programming/project/parts/sqlalchemyhg/lib', > > '/home/toinbis/Desktop/programming/project/parts/svnapps/ > > sphinxsearchtrunk/api', > > '/home/toinbis/Desktop/programming/project/src/tsd', > > ] > > > _interactive = True > > if len(sys.argv) > 1: > > _options, _args = __import__("getopt").getopt(sys.argv[1:], > > 'ic:m:') > > _interactive = False > > for (_opt, _val) in _options: > > if _opt == '-i': > > _interactive = True > > elif _opt == '-c': > > exec _val > > elif _opt == '-m': > > sys.argv[1:] = _args > > _args = [] > > __import__("runpy").run_module( > > _val, {}, "__main__", alter_sys=True) > > > if _args: > > sys.argv[:] = _args > > __file__ = _args[0] > > del _options, _args > > execfile(__file__) > > > if _interactive: > > del _interactive > > __import__("code").interact(banner="", local=globals()) > > > On Jan 21, 1:31 pm, Graham Dumpleton <[email protected]> > > wrote: > >> Presuming that: > > >> /home/toinbis/Desktop/programming/project/bin/python > > >> is the Python you wanted used, what do you get when you run that and do: > > >> import sys > >> print sys.prefix > > >> Whatever the value of sys.prefix is for the Python you want used, add it > >> as: > > >> WSGIPythonHome <value of sys.prefix> > > >> Replacing <value of sys.prefix> as appropriate. > > >> Do not set WSGIPythonExecutable in this case. > > >> Alternatively, set: > > >> WSGIPythonExecutable /home/toinbis/Desktop/programming/project/bin/python > > >> Do not set WSGIPythonHome in this case. > > >> If that doesn't help, then also post the output of running: > > >> ldd mod_wsgi.so > > >> If that doesn't reference a libpython2.6.so from the buildout Python > >> installation, you are going to have to do some trickery. > > >> The easiest way is to locate the directory where the correct > >> libpython2.6.so will be installed into and then find the 'envars' file > >> in the same directory as the 'httpd' binary for your buildout > >> installation. Modify that file to include: > > >> PATH=<directory containing the correct python executable>:$PATH > >> export PATH > > >> LD_LIBRARY_PATH=<directory containing the > >> libpython2.6.so>:$LD_LIBRARY_PATH > >> export LD_LIBRARY_PATH > > >> In short though, the basic problem is that you have multiple Python > >> 2.6 installations on the same system and the way Python works it will > >> use as base reference for Python installation the 'python' executable > >> it finds in the PATH use environment variable. For Apache we therefore > >> need to override in the envvars file what PATH is and therefore what > >> Python it finds else it may use system wide installed Python as base. > >> The LD_LIBRARY_PATH is similarly needed where libpython2.6.so is not > >> in a standard library directory. > > >> Setting PATH like this avoids need to use either WSGIPythonHome or > >> WSGIPythonExecutable and so you should not set either of those > >> directives for this case. > > >> Indicate how that goes and can suggest some other things. > > >> Graham > > >> 2010/1/21 toinbis <[email protected]>: > > >> > Hi everyone! > > >> > Even though i compile mod_wsgi with "--with-python=/path/to/custom/ > >> > python/executable", the system python executable is being used to run > >> > the wsgi app, not the custom one. Is there any setting i'm > >> > misconfiguring in httpd.conf or anywhere else? > > >> > If the the Django framework (python-django Ubuntu package) is not > >> > installed in the system python, the url, triggering the django wsgi > >> > app, ends up with Apache's internal error and `"ImportError: No module > >> > named django.core.handlers.wsgi"` message in apache's error logs. If > >> > django is installed in the system path, it ends up with django pretty > >> > error page: > > >> > ImportError at / > > >> > No module named djangosphinx.models > > >> > Request Method: GET > >> > Request URL: http://127.0.0.1:8001/djangoapp/ > >> > Exception Type: ImportError > >> > Exception Value: > > >> > No module named djangosphinx.models > > >> > Exception Location: > >> > /home/toinbis/Desktop/programming/project/src/ > >> > tsd/core/models.py in <module>, line 3 > >> > Python Executable: /usr/bin/python > > >> > So clearly the problem is with using wrong python executable to run > >> > the wsgi app (djangosphinx is a module which is successfully imported > >> > with the zc.buildout custom generated python executable). > > >> > More background details: > > >> > Am deploying custom nginx + apache(mod_wsgi) + supervisor + mysql + > >> > python + django + php + phpmyadmin + wordpress setup using zc.buildout > >> > (http://buildout.org). Buildout.cfg details: > > >> > [apache] > >> > recipe = hexagonit.recipe.cmmi > >> > url =http://www.apache.lt/httpd/httpd-2.2.14.tar.gz > >> > keep-compile-dir = true > >> > configure-options = --enable-so > > >> > [mod_wsgi] > >> > recipe = hexagonit.recipe.cmmi > >> > url =http://modwsgi.googlecode.com/files/mod_wsgi-3.1.tar.gz > >> > keep-compile-dir = true > >> > configure-options = --with-python=${directories:buildout_root}/bin/ > >> > python --with-apxs=${directories:buildout_root}/parts/apache/bin/apxs > > >> > The vhosts.conf file: > > >> > <snip> > >> > #============================= > >> > #Django_wsgi_app > >> > #============================= > >> > <VirtualHost *:8001> > > >> > <Directory /home/toinbis/Desktop/programming/project/runtime/ > >> > htdocs/django_wsgi/> > >> > Order deny,allow > >> > Allow from all > >> > </Directory> > > >> > WSGIDaemonProcess tsd user=www-data group=www-data threads=25 > >> > WSGIProcessGroup tsd > > >> > WSGIScriptAlias /djangoapp /home/toinbis/Desktop/programming/ > >> > project/runtime/htdocs/django_wsgi/djproject.wsgi > > >> > LogLevel warn > >> > ErrorLog /home/toinbis/Desktop/programming/project/runtime/ > >> > logs/apache_tsd_error.log > >> > CustomLog /home/toinbis/Desktop/programming/project/runtime/ > >> > logs/apache_tsd_access.log combined > > >> > </VirtualHost> > > >> > </snip> > > >> > Tried adding different combinations of such lines in between > >> > <Virtualhost> </Virtualhost>: > > >> > WSGIPythonExecutable /home/toinbis/Desktop/programming/project/bin/ > >> > python > >> > WSGIPythonHome /usr/bin > >> > #omelette dir has a symlink to all python modules installed with > >> > zc.buildout > >> > WSGIPythonPath /home/toinbis/Desktop/programming/project/parts/ > >> > omelette > > >> > But usually that just caused apache to fail during the start, > >> > generating error(s): > > >> > [Thu Jan 21 10:05:37 2010] [debug] mod_wsgi.c(9921): mod_wsgi > >> > (pid=2299): Socket for 'tsd' is '/home/toinbis/Desktop/programming/ > >> > project/parts/apache/logs/wsgi.2299.0.1.sock'. > >> > [Thu Jan 21 10:05:37 2010] [info] mod_wsgi (pid=2433): Starting > >> > process 'tsd' with threads=25. > >> > [Thu Jan 21 10:05:37 2010] [info] mod_wsgi (pid=2433): Initializing > >> > Python. > >> > <...> - similar lines :) > >> > [Thu Jan 21 > > ... > > 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.
