On 18/05/07, Daniel J. Popowich <[EMAIL PROTECTED]> wrote:
Graham Dumpleton writes: > Read: > > http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html > > Especially the area which starts just before: > > PythonOption mod_python.importer.path "['~']" > > Your particular issue is mentioned just after this example. Doesn't work, either in .htaccess or in <Directory> directives. This is what I have in my apache config: <Directory "/home/dpopowich/public_html/py"> SetHandler mod_python PythonHandler mod_python.servlet PythonOption mod_python.importer.path "['~']" PythonDebug on </Directory> When I go to http://localhost/~dpopowich/py/syspath, a simple mpservlet that writes out the current value of sys.path, I do NOT see /home/dpopowich/public_html/py in the path.
You will not see the path listed in sys.path. The mod_python module importer path and the Python sys.path are deliberately kept separate because of all the problems caused by each looking in the same location.
And when I try to import a python module in that directory, I get import errors.
If you are still using the old module importer in mpservlets to import your .mps file then that would probably still occur.
However, if I put this in my apache global context: PythonOption mod_python.legacy.importer * this fixes my immediate problem. Is this the way to completely turn this subsystem OFF?
Yes, but the old importer will disappear at some point in the future.
As a side note: I've been away from mod_python for a while and now am getting back into things and thought one project would be to update mpservlets to use the new importer I've heard so much about instead of the one I wrote for mpservlets. I must confess I'm a bit taken aback that it takes over six pages to document this one function
Considering the list of problems with the old importer came to about 12 pages, I thought it wasn't too bad. :-) http://www.dscpl.com.au/wiki/ModPython/Articles/ModuleImportingIsBroken
and a quick read has left me scratching my head and wondering if this is the way I want to go. I must confess I find it less than intuitive.
Just change this in your mpservlets package. The new importer can handle arbitrary extensions so can load .mps files no problem. With just this change your tutorial example works with no problems and it uses 'import' to get stuff from handler directory. kundalini:/usr/local/src/mpservlets-1.1.6 grahamd$ diff servlet.py.dist servlet.py 1269,1270c1269,1271 < code = {} < execfile(fname, code) ---
#code = {} #execfile(fname, code) module = apache.import_module(fname)
1276c1277,1278 < klass = code[basename] ---
#klass = code[basename] klass = getattr(module, basename)
Graham