|
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
|