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)

Reply via email to