[mod_python] mod_python startup error

Wouter van Marle wouter at squirrel-systems.com
Sun Jul 17 04:47:40 EDT 2005


As test, I've removed all the python content of the site. I've a file
index.html that just displays "hello world!". And I still have the same
error! Now it's getting really weird. The index.shtml file as supplied
by the apache installation gives the same error. URL used was
http://localhost/index.html and http://localhost/index.shtml.

Then the try/except thing as you suggested, this basically the same
result as the error message on the screen.

However, I just found that when typing
http://localhost/python/main.py/home directly in the address bar, the
site is displayed. Without the images, and without the css based layout,
files which for some reason are tried imported as python modules. I get
error messages in error.log such as:
[notice] mod_python: (Re)importing module 'main.css' with path set to
'['/var/www/html']'
followed a bit later by:
[client 127.0.0.1] PythonHandler mod_python.publisher: ImportError: No
module named css, referer: http://localhost/python/main.py/home

Similar results with the .png images!
The referer is indeed the script/function that calls the psp.run()
function to display the page. It seems my apache tries to import every
single file as if it is a python module, unless it is passed directly to
apache through the req.write() method.

So time to start looking very hard again at my apache configuration... 

Wouter.

On Sun, 2005-07-17 at 10:35 +1000, Graham Dumpleton wrote:
> You might then be getting hit by this problem then:
> 
>    http://issues.apache.org/jira/browse/MODPYTHON-24
> 
> Your main.py might have an import error of some form and as a result
> the publisher is instead trying to load index.py to find a function
> in it called main(). The bug means you see any error in not being
> able to find index.py rather than why main.py perhaps failed to load
> in the first place.
> 
> Suggest that in main.py you do something like the following:
> 
>    import sys, traceback
>    from mod_python import apache
> 
>    try:
>      # all your existing code in the module indented
> 
>    except:
>      
> apache.log_error("exception=%r"%traceback.format_tb(sys.exc_info()[2]))
>      raise
> 
> If the problem is that main.py is experiencing an import error, you
> would now be able to see it.
> 
> Alternatively, you might be able to rename main.py to index.py and
> access it through appropriate URL. Because it is the index.py file,
> it might not try and fall through to the index file and you might see
> any import error then.
> 
> Graham
> 
> On 17/07/2005, at 2:06 AM, Wouter van Marle wrote:
> 
> > Graham,
> >
> > Thanks for the quick replies.
> > Your suggestion with a complete path indeed didn't change anything.
> > Where/what is that module 'index' by the way? I can not find it.
> >
> > Directory structure:
> > /var/www/html is the server root
> > /var/www/html/python contains all the python files
> > accessing the file:
> > http://localhost/
> > which should call index.html, which contains a redirect
> > to /python/main.py/index
> >
> > Regarding MultiViews: that seems to be enabled (I don't know what it 
> > is,
> > I just leave it to the default installation values). In 
> > commonhttpd.conf
> > I have the following:
> >
> > <Directory />
> >   Options -All -Multiviews
> >
> > <Directory /var/www/html>
> >     Options -Indexes FollowSymLinks MultiViews
> >
> > Wouter.
> >
> > On Sat, 2005-07-16 at 22:27 +1000, Graham Dumpleton wrote:
> >> Presuming that the location '/python' maps to a physical directory
> >> called '/var/www/html/python', try instead using:
> >>
> >>    <Directory /var/www/html/python>
> >>    SetHandler python-program
> >>    PythonHandler mod_python.publisher
> >>    </Directory>
> >>
> >> When <Location> is used, there is no associated physical directory
> >> and therefore mod_python can't know what directory to add to the
> >> PythonPath (sys.path) for you.
> >>
> >> Only problem with this theory as I just realised though is that
> >> mod_python.publisher shouldn't be relying on sys.path to load the
> >> actual modules. It will instead explicitly provide the directory
> >> to apache.import_module(). In other words, it should work okay
> >> how you had it.
> >>
> >> What was the URL you were using to access the page? Do you know
> >> if "MultiViews" Apache option is enabled or disabled for that
> >> directory?
> >>
> >> Graham
> >>
> >> On 16/07/2005, at 10:09 PM, Wouter van Marle wrote:
> >>
> >>> Graham,
> >>>
> >>> Here the relevant details:
> >>>
> >>> in httpd2.conf one line:
> >>>
> >>> LoadModule python_module        extramodules/mod_python.so
> >>>
> >>>
> >>> In 16_mod_python.conf:
> >>>
> >>> <Location /python>
> >>>     SetHandler python-program
> >>>     PythonHandler mod_python.publisher
> >>> </Location>
> >>>
> >>> After dinner I'm going to look into this more! This is the current
> >>> setup.
> >>>
> >>> Wouter.
> >>>
> >>> On Sat, 2005-07-16 at 21:41 +1000, Graham Dumpleton wrote:
> >>>> Have you specified:
> >>>>
> >>>>    PythonHandler mod_python.publisher
> >>>>
> >>>> within a <Directory> directive or in a .htaccess file?
> >>>>
> >>>> If you haven't and you instead put it at global scope or within a
> >>>> <Location> directive, you can have such problems because PythonPath
> >>>> will not be automatically extended with the name of the directory
> >>>> for which PythonHandler is specified.
> >>>>
> >>>> Alternatively, are you setting PythonPath explicitly in any way?
> >>>> Setting PythonPath explicitly can also override the automatic 
> >>>> addition
> >>>> of the PythonHandler directive to PythonPath and again module will
> >>>> not be able to be found.
> >>>>
> >>>> You might want to post the snippet of Apache configuration where you
> >>>> setup use of mod_python. There is no need to send the whole Apache
> >>>> configuration, just the relevant bit, ensuring though you show any
> >>>> context it is set within, such as <Location>, <Directory> when it
> >>>> is appropriate.
> >>>>
> >>>> Graham
> >>>>
> >>>> On 16/07/2005, at 9:27 PM, Wouter van Marle wrote:
> >>>>
> >>>>>  Hi all,
> >>>>>
> >>>>>  After an upgrade to Mandrake 10.2, mod_python shows the following
> >>>>> error:
> >>>>>
> >>>>>  Mod_python error: "PythonHandler mod_python.publisher"
> >>>>>
> >>>>> Traceback (most recent call last):
> >>>>>
> >>>>>   File "/usr/lib/python2.4/site-packages/mod_python/apache.py", 
> >>>>> line
> >>>>> 299, in HandlerDispatch
> >>>>>     result = object(req)
> >>>>>
> >>>>>   File "/usr/lib/python2.4/site-packages/mod_python/publisher.py",
> >>>>> line 98, in handler
> >>>>>     path=[path])
> >>>>>
> >>>>>   File "/usr/lib/python2.4/site-packages/mod_python/apache.py", 
> >>>>> line
> >>>>> 454, in import_module
> >>>>>     f, p, d = imp.find_module(parts[i], path)
> >>>>>
> >>>>> ImportError: No module named index
> >>>>>
> >>>>>
> >>>>>> From my address bar I can see that this is before the very first
> >>>>> page (an html page that redirects to the python based content and
> >>>>> thereby changes the url in the address bar). Any idea what's going
> >>>>> wrong here?
> >>>>>
> >>>>>  The software, from rpm packages:
> >>>>>  apache2-2.0.53-9mdk
> >>>>>  apache2-mod_python-2.0.53_3.1.4-4mdk
> >>>>>  python-base-2.4.1-2mdk
> >>>>>  python-2.4.1-2mdk
> >>>>>
> >>>>>  Wouter. _______________________________________________
> >>>>> Mod_python mailing list
> >>>>> Mod_python at modpython.org
> >>>>> http://mailman.modpython.org/mailman/listinfo/mod_python
> >>>>
> >>>>
> >>
> >>
> >
> > _______________________________________________
> > Mod_python mailing list
> > Mod_python at modpython.org
> > http://mailman.modpython.org/mailman/listinfo/mod_python
> 
> 



More information about the Mod_python mailing list