[mod_python] Serious wierdness with PythonPath and Files

Gregory Bond gnb at itga.com.au
Mon Mar 15 12:42:49 EST 2004


This is getting weirder and weirder.  See FAQ 3.4 for more details!

Under 2.7, I did this:
  <Directory /mywebdir>
    AddHandler python-program .py
    PythonDebug On
    PythonPath "['/mywebdir'] + sys.path"
    <Files "prog1.py"
      PythonHandler prog1
    </Files>
    <Files "prog2.py"
      PythonHandler prog2
    </Files>
  </Directory>

and it all worked fine.  I could use prog1.py and prog2.py as expected and the 
server was able to find the files to import.

If I try this under 3.0.4 or 3.1.3, then it fails, with unable to import.
Adding some debug code into apache.py:import_module() shows this:

[Mon Mar 15 11:47:01 2004] [notice] mod_python: (Re)importing module 'mptest', s
ys.path = ['mptest.py/', '/opt/python-2.3.1/lib/python23.zip', <rest of sys.path>]

i.e. the PyhonPath directive is not being recognised / acted on.

Weird #1:

If I add the PythonPath to a wildcard files directive:
    <Files *.py>
      PythonPath "['/mywebdir'] + sys.path"
    </Files>
    <Files "prog1.py"
      PythonHandler prog1
    </Files>
	
Then it _sometimes_ works.  And once it's worked once, then it will continue 
to work for the life of that apache process.

Weirder #2:  If I add the PythonPath to ONLY ONE of the Files entries:

    <Files "prog1.py"
      PythonHandler prog1
    </Files>
    <Files "prog2.py"
      PythonHandler prog2
      PythonPath "['/mywebdir'] + sys.path"
    </Files>

Then, after a server restart, prog1.py fails.  As soon as I access prog2.py 
for the first time, this works, and from then on prog1.py also works until the 
next server restart.

Now I can work around this by adding a PythonPath to every <Files> section, 
at some cost to efficiency, but there is something very odd going on here.





More information about the Mod_python mailing list