Are you still loading mod_python into Apache? That will stop WSGIPythonHome working as mod_python handles Python interpreter initialisation when both loaded and certain features of mod_wsgi crippled as a result.
Graham On 15 April 2011 10:06, Paddy Joy <[email protected]> wrote: > Hi Graham, > > Yes when I created the BASELINE I used --no-site-packages. > > I ran a test as described in the docs with WSGIPythonHome /usr/local/ > pythonenv/BASELINE > > but it still shows sys.prefix = /usr > > I also checked /etc/apache2/envvars and there is nothing in there that > sets the PYTHONPATH > > Any other thoughts on what else I can check? > > Thanks, > Paddy > > On Apr 15, 8:09 am, Graham Dumpleton <[email protected]> > wrote: >> Actually, thinking about it it will always have main Python >> installation site-packages at the end. This is why it is important to >> ensure the order things are done is correct. >> >> The reason it is still there is that mod_wsgi is still starting up >> with the main Python installation and all you are doing is adding in >> the virtual environment site-packages on top of that. When ordering is >> right, the virtual environment site-packages additions would come >> earlier in the sys.path and so hide any package of same name in main >> Python installation site-packages. >> >> To totally avoid seeing anything from main Python installations >> site-packages, you need to create a virtual environment with >> --no-site-packages and point WSGIPythonHome at it. That way mod_wsgi >> will use it is as baseline Python installation. You will though when >> doing this still see that baseline virtual environments site-packages >> directory listed, but that site-packages directory, if >> --no-site-packages option works, should be empty and so no chance of >> picking up packages/modules from the original system wide Python from >> which the virtual environments are being created. >> >> So, when you created baseline for use with WSGIPythonHome, did you use >> --no-site-packages for it? And was it that baselines site-packages >> that was listed or the system wide Python installations when using >> WSGIPythonHome against the virgin baseline? >> >> Only other possibilities are that PYTHONPATH is set in environment of >> user that Apache runs as. That the BASELINE wasn't readable by user >> Apache runs as and therefore fell back to system wide Python. >> >> Do some of the checks in: >> >> http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python... >> >> to validate what sys.prefix is set to and so what Python installation >> it has used. >> >> Graham >> >> On 14 April 2011 23:48, Paddy Joy <[email protected]> wrote: >> >> > Hi Graham, >> >> > Thanks for the reply and spotting the wrong placement of the path >> > save. >> >> > I have tidied up the django.wsgi but I am still seeing the same issue. >> > django.wsgi is now: >> >> > ALLDIRS = ['/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/site- >> > packages/'] >> > import os, sys, site >> >> > # Prev path >> > print sys.path >> >> > prev_sys_path = list(sys.path) >> >> > for directory in ALLDIRS: >> > site.addsitedir(directory) >> >> > new_sys_path = [] >> >> > for item in list(sys.path): >> > if item not in prev_sys_path: >> > new_sys_path.append(item) >> > sys.path.remove(item) >> > sys.path[:0] = new_sys_path >> >> > sys.path.append('/var/django') >> > sys.path.append('/var/django/fasttraku') >> >> > # New path >> > print sys.path >> >> > os.environ['DJANGO_SETTINGS_MODULE'] = 'fasttraku.settings' >> >> > import django.core.handlers.wsgi >> > application = django.core.handlers.wsgi.WSGIHandler() >> >> > Output in apache log shows path at end of django.wsgi still includes >> > main site-packages: >> >> > Original path - [Thu Apr 14 23:26:03 2011] [error] [...........'/usr/ >> > lib/python2.5/site-packages', .......] >> >> > Path at end of wsgi script - [Thu Apr 14 23:26:03 2011] [error] >> > [...........'/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/site- >> > packages', '/usr/lib/python2.5/site-packages'....... ] >> >> > Intention is that it would not fall back onto system wide site- >> > packages. The virtual environment "DJANGO_LEGACY_1.2" was created with >> > --no-site-packages and this can be confirmed by activating from the >> > command line. >> >> > paddy@joytech:/var/django$ source /usr/local/pythonenv/ >> > DJANGO_LEGACY_1.2/bin/activate >> > (DJANGO_LEGACY_1.2)paddy@joytech:/var/django$ python >> > Python 2.5.2 (r252:60911, Jan 20 2010, 23:14:04) >> > [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2 >> > Type "help", "copyright", "credits" or "license" for more information. >> >>>> import sys; print sys.path >> > ['', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/site- >> > packages/django_registration-0.7-py2.5.egg', '/usr/local/pythonenv/ >> > DJANGO_LEGACY_1.2/lib/python2.5/site-packages/setuptools-0.6c11- >> > py2.5.egg', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/site- >> > packages/pip-1.0-py2.5.egg', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/ >> > lib/python25.zip', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/ >> > python2.5', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/plat- >> > linux2', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/lib- >> > tk', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/lib- >> > dynload', '/usr/lib/python2.5', '/usr/lib64/python2.5', '/usr/lib/ >> > python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib64/ >> > python2.5/lib-tk', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/ >> > python2.5/site-packages', '/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/ >> > python2.5/site-packages/PIL'] >> >> > I have also tried creating a BASELINE virgin environment and adding >> > WSGIPythonHome /usr/local/pythonenv/BASELINE to apache config as >> > described in your docs but I still see the same behaviour. >> >> > Has me stumped. >> >> > Paddy >> >> > On Apr 14, 8:36 pm, Graham Dumpleton <[email protected]> >> > wrote: >> >> On 14 April 2011 00:13, Paddy Joy <[email protected]> wrote: >> >> >> > Hi, >> >> >> > I have attempted to set up a virtualenv to run some applications using >> >> > django 1.2.5. From the command line everything appears to be ok >> >> > however when I run the application using mod_wsgi daemon mode I am >> >> > getting conflicting versions of site-packages in sys.path. >> >> >> Have you tried using --no-site-packages to virtualenv, or do you still >> >> want fallback to base Python installation? >> >> >> Anyway, see real reason for problem below. >> >> >> > Config: >> >> >> > Django 1.25 in /usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/ >> >> > site-packages/django >> >> > Django svn in /usr/lib/python2.5/site-packages/django >> >> >> > django.wsgi >> >> >> > import os, sys, site >> >> >> > site.addsitedir('/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/ >> >> > site-packages') >> >> >> You have this in the wrong spot. See: >> >> >> http://code.google.com/p/modwsgi/wiki/VirtualEnvironments >> >> >> You are meant to save away sys.path before calling site.addsitedir(). >> >> >> > prev_sys_path = list(sys.path) >> >> >> > sys.path.append('/var/django') >> >> > sys.path.append('/var/django/fasttraku') >> >> > sys.path.append('/var/django/debug_toolbar') >> >> >> > new_sys_path = [] >> >> >> > for item in list(sys.path): >> >> > if item not in prev_sys_path: >> >> > new_sys_path.append(item) >> >> > sys.path.remove(item) >> >> > sys.path[:0] = new_sys_path >> >> >> > os.environ['DJANGO_SETTINGS_MODULE'] = 'fasttraku.settings' >> >> >> > import django.core.handlers.wsgi >> >> > application = django.core.handlers.wsgi.WSGIHandler() >> >> >> > print sys.path >> >> >> > The output of print.sys shows: >> >> > ['/usr/local/pythonenv/DJANGO_LEGACY_1.2/lib/python2.5/site- >> >> > packages', ........... '/usr/lib/python2.5/site-packages'] >> >> >> > When operating from the command line the virtualenv sys.path doesn't >> >> > include '/usr/lib/python2.5/site-packages' and everything works as >> >> > expected but when running through the mod_wsgi daemon both paths are >> >> > included which causes the wrong versions of packages to be imported. >> >> >> > Any ideas what I am doing wrong? >> >> >> > Paddy >> >> >> > -- >> >> > 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 >> >> > athttp://groups.google.com/group/modwsgi?hl=en. >> >> > -- >> > 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 >> > athttp://groups.google.com/group/modwsgi?hl=en. > > -- > 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. > > -- 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.
