Importing a file into another module's namespace
google at mrabarnett.plus.com
Tue Apr 28 04:23:03 CEST 2009
Gary Oberbrunner wrote:
> 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
> 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)
> 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!
for x in dir(xyz):
if not x.startswith("__"):
setattr(foo.bar, x, getattr(xyz, x))
More information about the Python-list