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

Reply via email to