Graham Dumpleton
grahamd at dscpl.com.au
Wed Jul 12 07:23:35 EDT 2006
Whoops, didn't see you had VampireImportHooks set to On. I better think some more about what you are doing and refresh myself how that feature works. Graham On 12/07/2006, at 9:14 PM, Graham Dumpleton wrote: > > On 12/07/2006, at 6:47 PM, apocalypznow 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" >> 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() >> > > This is nothing to do with Vampire, it is how builtin Python > "import" behaves > in mod_python. Specifically, when you use "import" the module first > loaded > is the one that will be used thereafter. The reason you are seeing > several > old copies is most likely because you are using a version of Apache > running > with the prefork MPM and each request is being served by a > different Apache > child process and which has at different times loaded different > versions of > the module. > > If the module the "import" is being done in is the top level > handler module > loaded by Vampire, instead of using "import" use: > > ticket = vampire.importModule("ticket") > > Vampire's module importer does not look in sys.path though, so if > the "ticket" > module is not in the same directory, you need to specify the path > to get the > module from. > > ticket = vampire.importModule("ticket", path=["/some/directory"]) > > Directories which modules are imported from using Vampire module > loader should > not also be in sys.path as strange things can happen. > > BTW, you should also read: > > http://www.dscpl.com.au/articles/modpython-003.html > > for general background information on problems with the module > importer in > mod_python. > > Graham > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python >
|