apocalypznow
apocalypznow at gmail.com
Wed Jul 12 15:30:57 EDT 2006
Oops, solved it. Instead of using: ticket = vampire.importModule("ticket", path=["/some/directory"]) I am using: ticket = vampire.importModule("ticket", path="/some/directory") which fixed the problem. apocalypznow wrote: > Thanks Graham.... I appreciate the clarity in your response. I made the > necessary changes, and here is what I get as a result: > > Mod_python error: "PythonHandler vampire" > > Traceback (most recent call last): > > File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line > 299, in HandlerDispatch > result = object(req) > > File "/usr/lib/python2.3/site-packages/vampire/lookup.py", line 709, > in _handler > module = _import(req,file) > > File "/usr/lib/python2.3/site-packages/vampire/lookup.py", line 54, in > _import > module = _moduleCache.importModule(name,directory,req) > > File "/usr/lib/python2.3/site-packages/vampire/cache.py", line 316, in > importModule > execfile(file,module.__dict__) > > File "/var/www/mod_python/forums/forum.py", line 8, in ? > ticket = vampire.importModule("ticket", > path=["/var/www/mod_python/lib"]) > > File "/usr/lib/python2.3/site-packages/vampire/cache.py", line 161, in > importModule > path = os.path.normpath(path) > > File "/usr/lib/python2.3/posixpath.py", line 370, in normpath > initial_slashes = path.startswith('/') > > AttributeError: 'list' object has no attribute 'startswith' > > > Graham Dumpleton wrote: > >> >> On 12/07/2006, at 9:23 PM, Graham Dumpleton wrote: >> >>>>> Module importing with mod_vampire is not working. I get one of >>>>> several old copies of the python program I am importing! >>>>> >>>>> Here is the relevant section of my httpd.conf file: >>>>> Alias /forums "/var/www/mod_python/forums" >>>>> <Directory /var/www/mod_python/forums> >>>>> SetHandler python-program >>>>> PythonHandler vampire >>>>> PythonDebug On >>>>> Options -MultiViews -Indexes >>>>> PythonPath "['/var/www/mod_python/lib','/var/www/mod_python/ >>>>> forums']+sys.path" >> >> >> >> When using Vampire, you shouldn't be listing handler directories in >> sys.path >> and if you want to use Vampire "import" hook or vampire.importModule() >> then directories targeted by them should also not be in sys.path. Thus, >> would nearly always when using Vampire use: >> >> PythonPath 'sys.path' >> >> This ensures that no extra directories are added to sys.path. >> >>>>> PythonOption VampireImportHooks On >>>>> </Directory> >>>>> >>>>> The python program in question "ticket.py" is in the /var/www/ >>>>> mod_python/lib folder. I have also moved it to the /var/www/ >>>>> mod_python/forums folder. The results are the same no matter >>>>> where it is. The calling program is in the /var/www/mod_python/ >>>>> forums folder, and it does this: >>>>> >>>>> import ticket >>>>> d = ticket.getData() >> >> >> >> Where in the calling program is this located? For the Vampire "import" >> hook to work, the "import" must be at global scope and executed on >> module >> import and must not be contained within a function which is only getting >> executed when a specific request arrives. >> >> If this is not done, then standard Python "import" mechanism would be >> getting used and thus you would see behaviour as I explained in first >> mail for when it is used. >> >> Graham
|