|
Jeremy Hylton
jeremy at beopen.com
Mon Sep 11 14:14:46 EST 2000
I installed mod_python for the first time this morning. I'm just
learning how to use it. I ran into a couple of configuration issues,
because I am using Python 2.0b1 on my system.
Issue #1 is that mod_python.c makes explicit reference to a Python
executable named python1.5. This grabs an old version of Python on my
system and compilation fails because it can't find an include file.
If I replace "python1.5" with "python," it all works fine under Python
2.0.
-------------- next part --------------
*** src/modules/extra/mod_python.c Mon Sep 11 13:01:20 2000
--- ../mod_python-2.0/src/mod_python.c Mon May 22 08:14:39 2000
***************
*** 2526,2533 ****
* MODULE-DEFINITION-START
* Name: python_module
* ConfigStart
! PyVERSION=`python -c "import sys; print sys.version[:3]"`
! PyEXEC_INSTALLDIR=`python -c "import sys; print sys.exec_prefix"`
PyLIBP=${PyEXEC_INSTALLDIR}/lib/python${PyVERSION}
PyLIBPL=${PyLIBP}/config
PyLIBS=`grep "^LIB[SMC]=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '`
--- 2526,2533 ----
* MODULE-DEFINITION-START
* Name: python_module
* ConfigStart
! PyVERSION=`python1.5 -c "import sys; print sys.version[:3]"`
! PyEXEC_INSTALLDIR=`python1.5 -c "import sys; print sys.exec_prefix"`
PyLIBP=${PyEXEC_INSTALLDIR}/lib/python${PyVERSION}
PyLIBPL=${PyLIBP}/config
PyLIBS=`grep "^LIB[SMC]=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '`
-------------- next part --------------
Issue #2: The installation of modules in site-packages is
significantly easier under Python 2.0, because you can count on
distutils being installed. Instead of using compileall.py, I wrote a
simple setup.py script that I would recommend for inclusion in the
next release.
-------------- next part --------------
#!/usr/bin/env python
from distutils.core import setup
setup(name = "mod_python",
version = "2.0",
author = "Gregory Trubetskoy",
author_email = "grisha at modpython.org",
packages = ["mod_python"],
package_dir = {'': 'lib/python'},
)
-------------- next part --------------
I also had a problem running the mptest.py script described in the
documentation; so I'm reporting it as recommended by the docs. I
don't know if the problem results from my use of Python 2.0 or being
confused about how to configure things or something else entirely.
If I run the generic mod_python install, I get an error when I tried
to load http://localhost:8080/test/mptest.py.
ERROR mod_python: "PythonHandler mptest"
Traceback (most recent call last):
File
"/usr/local/lib/python2.0/site-packages/mod_python/apache.py",
line 103, in Dispatch
module = import_module(module_name, req)
File
"/usr/local/lib/python2.0/site-packages/mod_python/apache.py",
line 246, in import_module
exec "import " + module_name
File "<string>", line 1, in ?
ImportError: No module named mptest
The problem, near as I can tell, is that the mod_python.apache inserts
"." at the head of sys.path -- but the current working directory is
"/". There's no way "." would work unless apache or mod_python
explicitly changed the cwd to the directory that contains mptest.py.
So I changed the relevant lines in apache.py to do that:
# unless pythonpath is set explicitely
if pythonpath is not None:
sys.path = eval(pythonpath)
else:
dir, file = os.path.split(req.filename)
sys.path.insert(0, dir)
## # add '.' to sys.path
## if '.' not in sys.path:
## sys.path[:0] = ['.']
Now it works. The test script prints "Hello World!"
Any idea what went wrong? Have I done something naive in my
configuration of Apache or mod_python? What component is responsible
for making the chdir call?
-- Jeremy Hylton <http://www.python.org/~jeremy/>
|