Graham Dumpleton <[EMAIL PROTECTED]> writes:
> On Aug 27, 9:57 am, Olaf Meeuwissen <[EMAIL PROTECTED]> wrote:
>> Graham Dumpleton <[EMAIL PROTECTED]> writes:
>> > In the WSGI script file, add:
>>
>> > import sys
>>
>> > print >> sys.stderr, str(sys.path)
>>
>> > This will cause value of sys.path to be logged to Apache error log. Go
>> > through what is dumped out to just make sure that .pth files contents
>> > added correctly and that all the other directories added look
>> > reasonable and refer to your virtual environment.
>>
>> Thanks for the tip. Did that and here is what ends up in my Apache
>> error log:
>>
>> [Wed Aug 27 08:45:58 2008] [error]
>> ['/path/to/WSGIHome/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg'
>> , '/path/to/WSGIHome/lib/python2.5/site-packages/Pygments-0.10-py2.5.egg',
>> '/path/to/WSGIHome/lib/python2.5/site-packages/pytz-2008c-py2.5.egg',
>> '/path/to/SandBox/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg',
>> '/path/to/SandBox/lib/python2.5/site-packages/pysqlite-2.4.1-py2.5-linux-i6
>> 86.egg',
>> '/path/to/SandBox/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg',
>> '/path/to/SandBox/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686
>> .egg', '/path/to/WSGIHome/lib/python2.5',
>> '/path/to/WSGIHome/lib/python2.5/plat-linux2',
>> '/path/to/WSGIHome/lib/python2.5/lib-tk',
>> '/path/to/WSGIHome/lib/python2.5/lib-dynload', '/usr/lib/python2.5',
>> '/usr/lib/python2.5/lib-tk',
>> '/path/to/WSGIHome/lib/python2.5/site-packages',
>> '/path/to/SandBox/lib/python2.5/site-packages',
>> '/usr/share/python-support/python-subversion']
>>
>> My WSGIPythonHome is set to /path/to/WSGIHome which is a symlink
>> pointing to a --no-site-packages virtualenv. I use the symlink so I
>> can switch easily between virtualenvs w/ and w/o site packages. The
>> /path/to/SandBox is another no-site-packages virtualenv and here's
>> where I added a python-subversion.pth with the contents shown by the
>> last element of the sys.path.
>
> How in your configuration are you getting:
>
> /path/to/SandBox/lib/python2.5/site-packages
>
> added to sys.path?
The same way as /path/to/WSGIHome/lib/python2.5/site-packages, I'd
presume. That is, I have no clue, really. I think virtualenv and/or
easy_install automagically take care of that.
> If this contains .pth files you can't just use:
>
> sys.path.append(....)
>
> as that doesn't result in .pth files being parsed with content added
> to sys.path in the process.
The /path/to/SandBox/lib/python2.5/site-packages directory contains a
.pth file with the following contents:
/usr/share/python-support/python-subversion
so it seems to get added allright.
> So, post exact details of the following.
>
> 1. Version of mod_wsgi.
$ dpkg-query -W libapache2-mod-wsgi
libapache2-mod-wsgi 2.1-2
$
> 2. What WSGIPythonHome and WSGIPythonPath are set to in Apache
> configuration.
$ grep -r WSGIPythonHome /etc/apache2/sites-enabled/
/etc/apache2/sites-enabled/WSGIHome:WSGIPythonHome /path/to/WSGIHome
$ grep -r WSGIPythonPath /etc/apache2/sites-enabled/
$
> 3. Whether you are using WSGIDaemonProcess or WSGIProcessGroup and if
> so what they are set to.
$ grep -A3 WSGIDaemonProcess /etc/apache2/sites-enabled/SandBox
WSGIDaemonProcess SandBox user=olaf group=olaf \
threads=15 maximum-requests=10000 \
python-path=/path/to/SandBox/lib/python2.5/site-packages
$ grep WSGIProcessGroup /etc/apache2/sites-enabled/SandBox
WSGIProcessGroup SandBox
$
> 4. What 'ls -las' output is on your sandbox site packages directory.
$ ls -las /path/to/SandBox/lib/python2.5/site-packages/
total 356
4 drwxr-xr-x 5 olaf olaf 4096 2008-08-27 08:25 .
4 drwxr-xr-x 4 olaf olaf 4096 2008-08-21 16:25 ..
4 drwxr-xr-x 4 olaf olaf 4096 2008-08-21 16:26
Genshi-0.5.1-py2.5-linux-i686.egg
4 drwxr-xr-x 4 olaf olaf 4096 2008-08-21 16:26 Trac-0.11.1-py2.5.egg
4 -rw-r--r-- 1 olaf olaf 312 2008-08-21 16:26 easy-install.pth
4 drwxr-xr-x 5 olaf olaf 4096 2008-08-21 16:26
pysqlite-2.4.1-py2.5-linux-i686.egg
4 -rw-r--r-- 1 olaf olaf 44 2008-08-27 08:45 python-subversion.pth
324 -rw-r--r-- 1 olaf olaf 324858 2008-05-21 06:20 setuptools-0.6c8-py2.5.egg
4 -rw-r--r-- 1 olaf olaf 29 2008-08-21 16:25 setuptools.pth
$
> 5. The contents of the .pth files in that sandbox site packages
> directory.
$ cat /path/to/SandBox/lib/python2.5/site-packages/*.pth
/usr/share/python-support/python-subversion
import sys; sys.__plen = len(sys.path)
./setuptools-0.6c8-py2.5.egg
./pysqlite-2.4.1-py2.5-linux-i686.egg
./Trac-0.11.1-py2.5.egg
./Genshi-0.5.1-py2.5-linux-i686.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:];
p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
./setuptools-0.6c8-py2.5.egg
$
> 6. What your WSGI script file is doing in respect of manipulations of
> sys.path or calls to site.addsitedir().
I'm using the trac.wsgi script generated by trac-admin's deploy
command modulo the sys.stderr logging you suggested. FWIW, I've
attached the script.
Hope this helps and thanks for helping me trouble shoot this.
> Graham
>
>> Still, I get an error message in the browser and the following in my
>> trac.log:
>>
>> 2008-08-27 08:45:57,961 Trac[svn_fs] INFO: Failed to load Subversion
>> bindings
>> Traceback (most recent call last):
>> File
>> "/path/to/SandBox/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/ve
>> rsioncontrol/svn_fs.py", line 253, in __init__
>> _import_svn()
>> File
>> "/path/to/SandBox/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/ve
>> rsioncontrol/svn_fs.py", line 69, in _import_svn
>> from svn import fs, repos, core, delta
>> File "/usr/share/python-support/python-subversion/svn/fs.py", line 19,
>> in <module>
>> from libsvn.fs import *
>> File "/usr/share/python-support/python-subversion/libsvn/fs.py", line 7,
>> in <module>
>> import _fs
>> ImportError: No module named _fs
>>
>> I'm clueless. Anyone have any ideas?
>>
>>
>>
>> > Graham
>>
>> > On Aug 26, 9:38 am, Olaf Meeuwissen <[EMAIL PROTECTED]> wrote:
>> >> Sorry, meant to get back to this earlier but work got in the way.
>>
>> >> osimons <[EMAIL PROTECTED]> writes:
>> >> > On Aug 21, 5:02 am, Olaf Meeuwissen <[EMAIL PROTECTED]> wrote:
>>
>> >> >> Is there an easy way to install the Subversion SWIG bindings in a
>> >> >> virtualenv, or two?
>>
>> >> > Install the Subversion bindings against your correct main Python as
>> >> > usual,
>>
>> >> That would be `apt-get install python-subversion` in my case. Note
>> >> that this package installs the *.py files and the native .so libs in
>> >> different places.
>>
>> >> *.py in /usr/share/python-support/python-subversion/{svn,libsvn}
>> >> *.so in /usr/lib/python-support/python-subversion/python2.[45]/libsvn
>>
>> >> The libsvn_swig_py2.[45] .so's are in /usr/lib/.
>>
>> >> > and in each virtualenv sitepackages derived from this Python
>> >> > add a .pth file that points to location of svn libraries.
>>
>> >> > Like,
>>
>> >> > $ echo "/opt/local/lib/svn-python2.4" > /path/to/my/virutalenv/lib/
>> >> > python2.4/site-packages/svn-python.pth
>>
>> >> Did that.
>>
>> >> $ cat /path/to/virtualenv/lib/python2.5/site-packages/svn-python.pth
>> >> /usr/lib/python-support/python-subversion/python2.5
>> >> /usr/lib/python-support/python-subversion
>> >> /usr/share/python-support/python-subversion
>>
>> >> Restarted apache2 and fired up a new browser for good measure.
>>
>> >> > (My /opt/local/lib/svn-python2.4 contains the directories 'svn' and
>> >> > 'libsvn')
>>
>> >> Unfortunately, that didn't work.
>> >> Here's (what I think is) the relevant piece of the log:
>>
>> >> 2008-08-26 08:25:48,471 Trac[svn_fs] INFO: Failed to load Subversion
>> >> bindings
>> >> Traceback (most recent call last):
>> >> File
>> >> "/path/to/virtualenv/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac
>> >> /versioncontrol/svn_fs.py", line 253, in __init__
>> >> _import_svn()
>> >> File
>> >> "/path/to/virtualenv/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac
>> >> /versioncontrol/svn_fs.py", line 69, in _import_svn
>> >> from svn import fs, repos, core, delta
>> >> File "/usr/share/python-support/python-subversion/svn/fs.py", line
>> >> 19, in <module>
>> >> from libsvn.fs import *
>> >> File "/usr/share/python-support/python-subversion/libsvn/fs.py", line
>> >> 7, in <module>
>> >> import _fs
>> >> ImportError: No module named _fs
>>
>> >> FWIW, I'm using virtualenv-1.1 and using a virtualenv with site
>> >> packages (that is, created without the --no-site-packages option) as
>> >> my WSGIPythonHome works fine.
>>
>> >> Any ideas?
--
Olaf Meeuwissen FLOSS Engineer -- AVASYS Corporation
FSF Associate Member #1962 sign up at http://member.fsf.org/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Trac
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/trac-users?hl=en
-~----------~----~----~----~------~----~------~--~---
#!/home/olaf/trax/SandBox/bin/python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2008 Edgewall Software
# Copyright (C) 2008 Noah Kantrowitz <[EMAIL PROTECTED]>
# All rights reserved.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://trac.edgewall.org/wiki/TracLicense.
#
# This software consists of voluntary contributions made by many
# individuals. For the exact contribution history, see the revision
# history and logs, available at http://trac.edgewall.org/log/.
#
# Author: Noah Kantrowitz <[EMAIL PROTECTED]>
import os
import sys
def application(environ, start_request):
if not 'trac.env_path_parent_dir' in environ:
environ.setdefault('trac.env_path', '/home/olaf/trax/SandBox/trac')
if 'PYTHON_EGG_CACHE' in environ:
os.environ['PYTHON_EGG_CACHE'] = environ['PYTHON_EGG_CACHE']
elif 'trac.env_path' in environ:
os.environ['PYTHON_EGG_CACHE'] = os.path.join(environ['trac.env_path'],
'.egg-cache')
elif 'trac.env_path_parent_dir' in environ:
os.environ['PYTHON_EGG_CACHE'] =
os.path.join(environ['trac.env_path_parent_dir'],
'.egg-cache')
from trac.web.main import dispatch_request
print >> sys.stderr, str(sys.path)
return dispatch_request(environ, start_request)