Accessing global namespace

Peter Otten __peter__ at web.de
Mon Oct 6 07:23:21 EDT 2003


Tonguç Yumruk wrote:

> I'm trying to build a completely plug-in based system. One of my
> problems is importing a package dynamically. I'm trying to emulate the
> import command. The __import__() function or imp module doesn't help me
> much because they only return the module. I want to register the module
> with it's name in the current namespace. I can do it by:
> 
> globals()[module_name] = __import__(module_name)
> 
> But I don't think it's a good thing to access the global namespace
> directly. I prefer using setattr() but I cannot access the current
> namespace as an object I want something like
> 
> setattr(__main__,__import__(module_name))
> 
> Is that possible? I'm using Python 2.1 on Debian Woody
> 

Try (tested with 2.2 and 2.3).

import sys

setattr(sys.modules[__name__], "myos", __import__("os"))

sys.modules is a dictionary of all imported modules. It even has a
"__main__" key.

Peter





More information about the Python-list mailing list