diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index c6c38d8602..a883ec5fa2 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -1249,8 +1249,12 @@ class Freezer: pass # Check if any new modules we found have "hidden" imports - for origName in list(self.mf.modules.keys()): + checkHiddenImports = set(self.mf.modules.keys()) + while checkHiddenImports: + origName = next(iter(checkHiddenImports)) + checkHiddenImports.discard(origName) hidden = self.hiddenImports.get(origName, []) + preModules = frozenset(self.mf.modules.keys()) for modname in hidden: if modname.endswith('.*'): mdefs = self._gatherSubmodules(modname, implicit = True) @@ -1264,6 +1268,9 @@ class Freezer: self.__loadModule(self.ModuleDef(modname, implicit = True)) except ImportError: pass + addedModules = set(self.mf.modules.keys()) + addedModules -= preModules + checkHiddenImports |= addedModules # Special case for sysconfig, which depends on a platform-specific # sysconfigdata module on POSIX systems.