Accessing global namespace from module

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Mon Jun 11 17:10:03 EDT 2007


En Mon, 11 Jun 2007 17:29:35 -0300, reubendb <reubendb at gmail.com> escribió:

> On Jun 11, 3:30 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> wrote:
>> En Mon, 11 Jun 2007 15:18:58 -0300, reubendb <reube... at gmail.com>  
>> escribió:
>>
>> > The problem is I don't define the functions AddPlot() and DrawPlots().
>> > It's built into the python interpreter of the CLI version of the
>> > program I mentioned, and they are defined on the main script. I load
>> > the main script using something like "software -cli -s
>> > mainscript.py".
>> > In the mainscript.py I import myModule, but of course myModule does
>> > not have access to the functions defined in the global namespace of
>> > mainscript.py.
>>
>> Don't you have some import statements at the top of mainscript.py that  
>> are
>> responsible for bringing AddPlot and DrawPlots into the current  
>> namespace?
>> Import the same things in your second module.
>
> No, I *don't* have any import statement mainscript.py. When using this
> software's CLI, AddPlot and DrawPlots are available to me
> automagically from mainscript.py. Hence my question: How do I make
> this available from other module. Is there any way at all ?

Yes: create your own module on-the-fly, using the recipe posted earlier by  
John Krukoff.
If there are many functions, try enumerating them all:

import sys
 from types import ModuleType as module

plotModule = module('plot')
for key,value in globals().items():
     if key[:2] != '__':
         setattr(plotModule, key, value)

sys.modules['plot'] = plotModule




-- 
Gabriel Genellina




More information about the Python-list mailing list