Importing a file into another module's namespace

Gary Oberbrunner garyo at genarts.com
Mon Apr 27 21:46:13 EDT 2009


Hi; my first time posting here.  I have a somewhat tricky problem I'd
like some help with.

I have a module, foo.bar, that defines a number of functions and
variables as usual.  Now after importing foo.bar, I'd like to load
another file of code (say xyz.py), but *into* foo.bar's namespace.  So
if xyz.py contains:

def XYZ(arg):
  print "Aargh! ", arg
ABC="abc"

then I'd like to be able to do this in my main python file:

import foo.bar
m=sys.modules["foo.bar"] # or something like that
load_module_into_namespace("xyz.py", m)
foo.bar.XYZ("whatever")
print foo.bar.ABC

As you can see it's the middle two lines that have me stumped.  Anyone
have any ideas?  Oh yes, this needs to work in python 2.2 or so (earlier
is even better).

Here's a tantalizing snippet from the Python "import" doc:
"...If a file is found, it is parsed, yielding an executable code block.
If a syntax error occurs, SyntaxError is raised. Otherwise, an empty
module of the given name is created and inserted in the module table,
and then the code block is executed in the context of this module."

That's kind of what I want to do, except get an existing module and then
execute my xyz.py file's code block in the context of that module, I
think.  Any help would be much appreciated!

thanks,

-- Gary





More information about the Python-list mailing list