On 22 Apr 2005, at 03:06, Chris Smith wrote:
### def y1(): pass def foo(): from __main__ import y1 pass foo() ###
Here is a version of the code, stripped of the timeit code. The above segment exhibits the same symptoms as the previously submitted one.
Even though I am running this as "__main__" it behaves as though it is not __main__. i.e. if I run this with pyOxide without the 'run as __main__' option, it generates the same ImportError ('Can't import y1') as it does when run in the PythonIDE.
In the pythonIDE it generates the error whether the 'run as __main__' option is on or off. As a test of that option, I verified that the following code only runs when the __main__ option is on and it worked as expected:
### if __name__=='__main__': print 'running as main' ###
As always, reading the source provides the answer.
If you look in PyEdit.py, method Editor.execstring(), you'll see that the only thing "run as __main__" does is set the module name to "__main__". It does *not* change the globals dictionary to __main__.
I'm not sure about the reasoning behind this, I think Just wanted to make sure that if you had two edit windows open both with "run as __main__" selected they didn't influence each other. On the other hand I can imageine that if you do that, open two windows in __main__ mode, the behaviour you want is exactly that.
Just?
--
Jack Jansen, <[EMAIL PROTECTED]>, http://www.cwi.nl/~jack
If I can't dance I don't want to be part of your revolution -- Emma Goldman
_______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig