Jim Gallacher
jpg at jgassociates.ca
Thu Jun 1 11:56:19 EDT 2006
Wouter van Marle wrote: > Hi all, > > I'd like to use the psp templating module outside of the apache context: > this as I'm trying to create an off-line version of my website. But I > get errors when attempting to import psp. Instead of publishing the > resulting html code in apache, I want to save them to disk as static > html files. > > But when importing psp on the command line I get an error: > >>>> from mod_python import psp > > Traceback (most recent call last): > File "<pyshell#0>", line 1, in -toplevel- > from mod_python import psp > File "/usr/lib/python2.4/site-packages/mod_python/psp.py", line 20, in -toplevel- > import apache, Session, util, _psp > File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 28, in -toplevel- > import _apache > ImportError: No module named _apache > > Any ideas? Don't use psp directly. The really interesting stuff happens in the _psp parser module. Stripping away the mod_python specific code, PSP basically boils down to the following: from mod_python import _psp def external_psp_runner_thing(): filename = 'test.psp' req = FakeRequestObject('output.txt') vars = {'req': req} source = _psp.parse(filename) code = compile(source, filename, "exec") global_scope = globals().copy() global_scope.update(vars) exec code in global_scope class FakeRequestObject(object): ''' We need an object which has a write method that will take a length parameter the same as req.write(). For testing we'll just wrap a file object and write to that. ''' def __init__(self, filename): self.fout = open(filename, 'w') def write(self, value, length): self.fout.write(value) Jim
|