def import_all(package, exclude=['__init__', '__pycache__'], silent_fail=False): ''' Import all the modules and packages that live inside the given package. This is not recursive. Modules and packages defined inside a subpackage will not be imported (of course, that subpackage itself may import them anyway.) You may specify a list of modules/packages to exclude, which is by default `['__init__', '__pycache__']`. Returns a list with all the imported modules and packages. todo: only tested with __init__ passed in ''' paths = package_finder.get_packages_and_modules_filenames(package) if isinstance(exclude, str): # Allowing one exclusion instead of a set exclude = [exclude] names = {} for path in paths: name = os.path.splitext(os.path.split(path)[1])[0] if name in exclude: continue full_name = package.__name__ + '.' + name names[path] = full_name d = {} for (path, name) in list(names.items()): try: d[name] = normal_import(name) except Exception: if not silent_fail: raise return d
def import_all(package, exclude='__init__', silent_fail=False): ''' Import all the modules and packages that live inside the given package. This is not recursive. Modules and packages defined inside a subpackage will not be imported (of course, that subpackage itself may import them anyway.) You may specify a module/package to exclude, which is by default `__init__`. Returns a list with all the imported modules and packages. todo: only tested with __init__ passed in ''' paths = package_finder.get_packages_and_modules_filenames(package) names = {} for path in paths: name = os.path.splitext(os.path.split(path)[1])[0] if name == exclude: continue full_name = package.__name__ + '.' + name names[path] = full_name d = {} for (path, name) in names.items(): try: d[name] = import_by_path(path, name) except Exception: if not silent_fail: raise return d
def import_all(package, exclude='__init__', silent_fail=False): ''' Import all the modules and packages that live inside the given package. This is not recursive. Modules and packages defined inside a subpackage will not be imported (of course, that subpackage itself may import them anyway.) You may specify a module/package to exclude, which is by default `__init__`. Returns a list with all the imported modules and packages. todo: only tested with __init__ passed in ''' paths = package_finder.get_packages_and_modules_filenames(package) names = {} for path in paths: name = os.path.splitext(os.path.split(path)[1])[0] if name == exclude: continue full_name = package.__name__ + '.' + name names[path] = full_name d = {} for (path, name) in names.items(): try: d[name] = normal_import(name) except Exception: if not silent_fail: raise return d