diff --git a/package_manager/__init__.py b/package_manager/__init__.py index e9ae92a..7959d0d 100644 --- a/package_manager/__init__.py +++ b/package_manager/__init__.py @@ -17,12 +17,23 @@ import logging log = logging.getLogger(__name__) if 'bpy' in locals(): - import importlib + from importlib import reload - log.debug("Reloading") - subproc = importlib.reload(subproc) - bpkg = importlib.reload(bpkg) + def recursive_reload(mod): + """Reloads the given module and all its submodules""" + log.debug("Reloading %s", mod) + from types import ModuleType + reloaded_mod = reload(mod) + for attr in [getattr(mod, attr_name) for attr_name in dir(mod)]: + if type(attr) is ModuleType and attr.__name__.startswith(mod.__name__): + recursive_reload(attr) + return reloaded_mod + + subproc = recursive_reload(subproc) + utils = recursive_reload(utils) + bpkg = recursive_reload(bpkg) Package = bpkg.Package + else: from . import subproc from . import bpkg