This is an annoying but which isn't a problem for Python because they don't execute multiple scripts, one after another (there is one __main__ and everything else is a module). So when the __main__ module in sys.modules is overwritten, it decref's the module and clears the dictionary with _PyModule_Clear(), even though the modules dictionary is still in use. Strangely this problem only happens with Python3.1.1 and Python3.2x svn but not 3.1.2 This commit restores the namespace after _PyModule_Clear() sets all its values to None.