LumaPictures / pymel

Python in Maya Done Right
Other
490 stars 131 forks source link

Keep reference to original module in LazyLoadModule #439

Open GlenWalker opened 3 years ago

GlenWalker commented 3 years ago

This is so all values in __dict__ of original module are not set to None by the module destructor when sys.modules[name] is the last reference to the original module, and is replaced during LazyLoadModule.__init__. This prevents any problems where another reference to the original module exists (such as in a PEP-302 loader).

This is a somewhat obscure problem, but I did encounter it as I am using a PEP-302 loader in Maya, and it took a couple of days to figure out. I have updated the loader to ensure no reference to the module is kept during module execution, but this also seems like a useful update to pymel.