How to import all submodules?

前端 未结 9 1404
盖世英雄少女心
盖世英雄少女心 2020-11-27 16:57

I have a directory structure as follows:

| main.py
| scripts
|--| __init__.py
   | script1.py
   | script2.py
   | script3.py

From ma

9条回答
  •  伪装坚强ぢ
    2020-11-27 17:22

    Simply works, and allows relative import inside packages:

    def import_submodules(package_name):
        """ Import all submodules of a module, recursively
    
        :param package_name: Package name
        :type package_name: str
        :rtype: dict[types.ModuleType]
        """
        package = sys.modules[package_name]
        return {
            name: importlib.import_module(package_name + '.' + name)
            for loader, name, is_pkg in pkgutil.walk_packages(package.__path__)
        }
    

    Usage:

    __all__ = import_submodules(__name__).keys()
    

提交回复
热议问题