|
- import importlib
- import importlib.util
- import re
- import sys
- from types import ModuleType
- from typing import Union
-
-
- def get_module_by_module_path(module_path: Union[str, ModuleType]):
- if module_path is None:
- raise ModuleNotFoundError("None is passed in as parameters as module_path")
-
- if isinstance(module_path, ModuleType):
- module = module_path
- else:
- if module_path.endswith(".py"):
- module_name = re.sub("^[^a-zA-Z_]+", "", re.sub("[^0-9a-zA-Z_]", "", module_path[:-3].replace("/", "_")))
- module_spec = importlib.util.spec_from_file_location(module_name, module_path)
- module = importlib.util.module_from_spec(module_spec)
- sys.modules[module_name] = module
- module_spec.loader.exec_module(module)
- else:
- module = importlib.import_module(module_path)
- return module
|