Graham Dumpleton
grahamd at dscpl.com.au
Wed Oct 19 08:00:15 EDT 2005
On 19/10/2005, at 9:32 PM, G.M.Dall'Olio wrote: > Hi all, I'm getting this error from mod_python, when I try to use > PyChart to create a simple chart: > > 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 136, in handler > result = util.apply_fs_data(object, req.form, req=req) > > File "/usr/lib/python2.4/site-packages/mod_python/util.py", line > 361, in apply_fs_data > return object(**args) > > File "/home/motif/public_html/Exp/PyChart/index.py", line 8, in home > chart = plot1.plot2() > > File "/home/motif/public_html/Exp/PyChart/plot1.py", line 57, in > plot2 > return ar.draw() > > File "/usr/lib/python2.4/site-packages/pychart/area.py", line 188, > in draw > can = canvas.default_canvas() > > File "/usr/lib/python2.4/site-packages/pychart/canvas.py", line 73, > in default_canvas > return init(None) > > File "/usr/lib/python2.4/site-packages/pychart/canvas.py", line 58, > in init > can = pscanvas.T(fname) > > File "/usr/lib/python2.4/site-packages/pychart/pscanvas.py", line > 25, in __init__ > basecanvas.T.__init__(self) > > File "/usr/lib/python2.4/site-packages/pychart/basecanvas.py", line > 70, in __init__ > self.title = re.sub("(.*)\\.py$", "\\1", sys.argv[0]) > > AttributeError: 'module' object has no attribute 'argv' > > I've searched with google and found that this topic has been already > addressed on this list, but still there is not solution. I've asked to > the author of the original post and he has resolved using spyce > instead of mod_python, but since I'm a newbie of mod_python, I would > like to continue with it. > Since the script works on the command line, probably it may be some > security setting in mod_python that restricts access to certain > modules, but I can't understand how to change this. > The python code in plot1.py is this: > > from pychart import * > def plot2(): > > data = [["Jan", 10], ["Feb", 22], ["Mar", 30]] > > ar = area.T(x_coord = category_coord.T(data, 0), > y_range = (0, None), > x_axis = axis.X(), > y_axis = axis.Y()) > ar.add_plot(bar_plot.T(data = data, label = "Something")) > > return ar.draw() > > and the Directive in Apache configuration is this: > > <Directory /home/motif/public_html/> > AllowOverride FileInfo > AddHandler mod_python .py > PythonHandler mod_python.publisher > PythonDebug On > </Directory> > > It's about a month that I'm trying to resolve this... Can someone > give me some hints? Why mod_python requires sys.argv? Is this a > problem only of italian peoples? ;) It isn't mod_python that requires sys.argv, it is pychart that is the problem based on the traceback you provide. Ie., pychart has: self.title = re.sub("(.*)\\.py$", "\\1", sys.argv[0]) In short, pychart is written so as it can only work on the command line. As a work around, can only suggest you create a special module that you import using the PythonImport directive into the specific interpreter you are running your mod_python code in, with that module containing: import sys sys.argv = ['mod_python'] Ie., dummy up a value for sys.argv. Graham
|