Sean Reifschneider
jafo at tummy.com
Mon May 24 06:25:06 EDT 2004
I'm having a kind of weird problem and I don't fully understand why it's happening. Basically, it seems that sometimes a module I'm importing (from site-packages), is losing it's mind. It's like half way through a function it's running in entirely a different name-space. Yes, this can happen while making two calls into a module on successive lines of a function. What I traced it down to is that different calls are showing the following values for the module: <module 'jotweb.jotwebutils' from '/usr/lib/python2.2/site-packages/jotweb/jotwebutils.py'> <module '/var/www/jotweb/www.tummy.jotweb.jotwebutils' from '/usr/lib/python2.2/site-packages/jotweb/jotwebutils.py'> I really don't understand the latter. My HTML and site-related python files are in "/var/www/jotweb/www.tummy.com/html". If, in jotwebutils.py, I dump the stack when the module is imported, I see that the first time it's imported with the following: File "/var/tmp/mod_python-3.0.4-root/usr/lib/python2.2/site-packages/mod_python/apache.py", line 274, in HandlerDispatch File "/var/tmp/mod_python-3.0.4-root/usr/lib/python2.2/site-packages/mod_python/apache.py", line 440, in import_module File "lib/jotweb/__init__.py", line 32, in ? and the second time it's imported with: File "/var/tmp/mod_python-3.0.4-root/usr/lib/python2.2/site-packages/mod_python/apache.py", line 274, in HandlerDispatch File "/usr/lib/python2.2/site-packages/jotweb/jotweb_mod_python.py", line 45, in handler def handler(req): [... Deep into the bowels of my handler code ...] File "/var/www/jotweb/www.tummy.com/html/navigation.py", line 3, in ? import time, string, re, dircache, math File "lib/jotweb/__init__.py", line 32, in ? Now, it should be noted that I'm using the "imp" module to load modules dynamically when they are referenced from my HTML templates. But the code in question that is triggering this is: from jotweb import jotwebutils import jotweb navbar = jotwebutils.getGlobal('navbar') urlBase = jotweb.config.getconfig().get('tummyurlbase', 'unknown') jotwebutils.getGlobal is very simple: def getGlobal(name): from jotweb import config return(config.getconfig()['talglobalvars'][name].value()) If I change the "tummyurlbase" line above to: urlBase = jotwebutils.getGlobal('jotwebconfig').get('tummyurlbase', 'unknown') it works fine. I can do many "getGlobal()" lines, but if I do a "getconfig()", it's suddenly using another jotwebutils module. Note that all the jotweb imports are done using "import". Only local files in my HTML directory are imported using the "imp" module. I'm able to find workarounds for these issues in most cases, but it's kind of driving me crazy as far as when something will work and when it will lose it's mind. I tried moving getconfig() into the jotwebutils module, but that just seemed to make it worse. Then getGlobal() was also acting this way. Any thoughts? Thanks, Sean -- How does a girl like you get to be a girl like you? -- _North_by_Northwest_ Sean Reifschneider, Member of Technical Staff <jafo at tummy.com> tummy.com, ltd. - Linux Consulting since 1995. Qmail, Python, SysAdmin
|