variables bound in moudules are None when module is not completely imported
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Wed Feb 25 14:05:28 EST 2009
En Wed, 25 Feb 2009 16:48:16 -0200, <chrysn at fsfe.org> escribió:
> update: i've found one, but this only works if the exception is raised
> at a point determined by the outside.
>
> to explain why this is applicable: in the examples, i used `1/0` to
> raise a zero division exception inside the module whose scope i want to
> preserve. in my practical application, the exception is thrown by a
> function that was previously prepared by the outside module and monkey
> patched to where the inner module is expected to call a method from (in
> my case, the gtk main loop).
>
> now if the function raising the exception saves both
> `sys._getframe().f_back.f_globals` and a .copy() of that dictionary, the
> original dictionary can later (when the exception is caught and the
> module's globals are all None) be .update()d with the copy, and the
> original module globals are restored.
That makes a strange situation where the module doesn't exist in
sys.modules but its globals are still alive...
> as said, this is just a workaround -- the original question still
> remains open.
I'd try to move all the global stuff in that module into a function,
"init". Importing the module will always succeed - you have to manually
call init() after importing it.
--
Gabriel Genellina
More information about the Python-list
mailing list