[IPython-user] FakeModule and python's __main__ module

Mike Blatchley mabxmab@gmail....
Tue Oct 6 21:56:08 CDT 2009


A friend of mine has recently introduced me to IPython and I'm hooked.  I've
been using an older version (0.8.x), but have now downloaded 0.10 and am
having trouble with some of my existing python scripts.  In a few of these,
I get lazy with "returning" certain objects from methods.  Instead of
returning them, I place them directly in the main/interactive namespace with
the __main__ module.

def someFunction():
    import __main__
    # do some stuff here
    __main__.myObject=myObject
    #etc.

When I return to the interactive prompt, myObject isn't there.  Conversely,
sometimes I try to retrieve "global" attributes from that namespace, but now
get an error.  For example:

In [16]: myObject=None
In [17]: def test():
   ....:     import __main__
   ....:     print __main__.myObject
In [18]: test()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
C:\work\test\<ipython console> in <module>()
C:\work\test\<ipython console> in test()
AttributeError: 'FakeModule' object has no attribute 'myObject'

I've done searches on FakeModule and see quite a few mailing list postings
indicating it replaces python's __main__, but am unclear if there is any way
around my problem.  That is, other than sticking with the older releases of
IPython.  Or rewriting my affected methods to not use __main__.

Any suggestions would be much appreciated.

Thanks much,
Mike
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/ipython-user/attachments/20091006/a73b5d89/attachment.html 


More information about the IPython-user mailing list