On Fri, 11 Aug 2006 01:23:14 +0800 Angelo Zhou <[EMAIL PROTECTED]> wrote:
#> 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 True... but I do not know in advance what is the contents of test.py file -- it could be "a=1" :) Sure, I could go over emacs.__dict__ and expose everything except eexecfile, but that's even less satisfying than the solution above. Anyway, thanks for the suggestion. -- Best wishes, Slawomir Nowaczyk ( [EMAIL PROTECTED] ) Zawinski's Law: "Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can." -- http://mail.python.org/mailman/listinfo/python-list