import importlib.util import os import sys def load_module(name, path, mod_file="__init__.py"): # The module is either defined by a directory, in which case we search for # `path/name/__init__.py`, or it is a single file at `path/mod_file`. mod_path = ( os.path.join(path, name, mod_file) if mod_file == "__init__.py" else os.path.join(path, mod_file) ) spec = importlib.util.spec_from_file_location(name, mod_path) module = importlib.util.module_from_spec(spec) sys.modules[name] = module spec.loader.exec_module(module) return module