|
Ian Clelland
ian at veryfresh.com
Thu Mar 21 03:16:59 EST 2002
I believe that your problems stem from the fact that you are trying to
use mod_python as if it was a 'traditional' scripting language like PHP
or ASP.
With either of those languages, you can simply write scripts with the
appropriate extensions, place them in a web-accessable directory, and
they're automatically executable.
With mod_python, you are actually writing Apache modules in the python
language. You need to use Apache directives to configure those modules
to be activated at the appropriate times.
Depending on how you want to do things, I see two ways to get your test
script to run:
1) Install the script as a handler. This is the closest to what you are
currently doing. The problem is that Python cannot find your module.
You can just add the line
PythonPath "sys.path+['/usr/local/httpd/htdocs/test']"
to your <Directory> entry, and the module should load.
2) Use the supplied Publisher handler (check the tutorial at
www.modpython.org). This is a great hack which allows a single
handler to load .py files from anywhere in your site. It appears to
be closer to what you intended to do, which is to just run a .py
file out of a URL.
I hope that helps clear things up.
A couple of quick points about your original email:
> /test/mptest.py - I am asked what program to use to execute this file
This is because you have associated a MIME type with the .py extension,
and Apache doesn't know what to do with it. (The mod_python module
doesn't deal with MIME types like mod_php). The only thing it can do is
offer the file for download.
> /test/mptest - lists the ASCII source of the file
In this case, Apache's content negotiation is finding the best match
for /mptest and returning that to you as a text document.
> <IfModule mod_python.c>
> AddType application/x-httpd-py .py
> </IfModule>
This section is unnecessary, and should probably be deleted.
> PYTHONPATH: /usr/lib/python2.1:/usr/lib/python2.1/plat-linux2:
> /usr/lib/python2.1/lib-tk:/usr/lib/python2.1/lib-dynload:/usr/lib/
> python2.1/site-packages:/usr/lib/apache/lib/python/site-packages
This variable shows the locations where Python will look for modules
when you use an import statement (or a Python*Handler directive). Since
/usr/local/httpd/htdocs/test is not in the list, Python cannot find
your mptest module.
Regards,
Ian
<ian at veryfresh.com>
|