Dino Viehland wrote: > Thanks for reporting this. I've opened bug #9066 to track this. If you > don't need to add custom runtime behavior to the objects as a work around you > could create a new module using imp.new_module and push the values into > there. I'm marking this as a v2.0 bug but if it's blocking you let me know. > The second example is our workaround. :-)
Thanks Michael http://www.voidspace.org.uk/ironpython/ > On the 2nd example you might want to try using a type other than sys as the > module type. Sys is a little special in IronPython. > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Foord > Sent: Wednesday, March 21, 2007 7:02 AM > To: Discussion of IronPython > Subject: [IronPython] Problems with Imports > > Hello all, > > We do see some differences between the way IronPython and CPython > resolve imports. (Tested with IP 1.0.1 I'm afraid.) We encountered these > when patching sys.modules for the purposes of testing, but they could > affect any code that does magic with sys.modules. > > It looks like you can't put arbitrary objects into sys.modules in > IronPython, but you can with CPython. The following code works fine on > CPython, but fails on IP : > > import sys > class MockModule(object): > def __init__(self, name): > self.__name__ = name > > > TopModule = MockModule("TopModule") > sys.modules["TopModule"] = TopModule > > SubModule = MockModule("SubModule") > SubModule.Object = object() > TopModule.SubModule = SubModule > sys.modules["TopModule.SubModule"] = SubModule > > import TopModule.SubModule > from TopModule.SubModule import Object > > > There is also another difference. The following code works fine on > IronPython, but *not* on CPython > > > import sys > ModuleType = type(sys) > > TopModule = ModuleType("TopModule") > sys.modules["TopModule"] = TopModule > > SubModule = ModuleType("SubModule") > SubModule.Object = object() > TopModule.SubModule = SubModule > # Required for CPython, not IronPython > # sys.modules["TopModule.SubModule"] = SubModule > > import TopModule.SubModule > from TopModule.SubModule import Object > > > You have to uncomment out 'the line' to get it to work in CPython. (Not > worth fixing by the way - unless it means that something else is broken > as a result - just a 'difference'.) > > Michael Foord > http://www.resolversystems.com > > -- > Michael Foord > Resolver Systems > [EMAIL PROTECTED] > > Office address: 17a Clerkenwell Road, London EC1M 5RD, UK > Registered address: 843 Finchley Road, London NW11 8NA, UK > > Resolver Systems Limited is registered in England and Wales as company number > 5467329. > VAT No. GB 893 5643 79 > > _______________________________________________ > users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > _______________________________________________ > users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > _______________________________________________ users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
