How to execute a file outside module's namespace?

Angelo Zhou mzhou at cs.hku.hk
Thu Aug 10 13:23:14 EDT 2006


Slawomir Nowaczyk wrote:
> Hello,
> 
> Let's say I have a module "emacs", defining function eexecfile(file):
> 
> def eexecfile(file):
>     # do other stuff
>     execfile(file,globals())
>     # do other stuff
> 
> Now, assume I have file test.py containing an assignment "x=1"
> 
> If I run python and do:
> 
> import emacs
> emacs.eexecfile("test.py")
> print emacs.x   # works, x was put in module namespace
> print x         # doesn't work, x is not defined in main script namespace
> 
> What is the best way to make "print x" work? Using the following:
> 
> import __main__
> def eexecfile(file):
>     # do other stuff
>     execfile(file, __main__.__dict__)
>     # do other stuff
> 
> seems to work, but it gives me a slightly uneasy feeling. Is this the
> right way?
> 

"from emacs import x" will expose x to the current namespace



More information about the Python-list mailing list