|
import importlib |
|
|
|
|
|
def dynamic_import(import_path, alias=dict()): |
|
"""dynamic import module and class |
|
|
|
:param str import_path: syntax 'module_name:class_name' |
|
e.g., 'espnet.transform.add_deltas:AddDeltas' |
|
:param dict alias: shortcut for registered class |
|
:return: imported class |
|
""" |
|
if import_path not in alias and ":" not in import_path: |
|
raise ValueError( |
|
"import_path should be one of {} or " |
|
'include ":", e.g. "espnet.transform.add_deltas:AddDeltas" : ' |
|
"{}".format(set(alias), import_path) |
|
) |
|
if ":" not in import_path: |
|
import_path = alias[import_path] |
|
|
|
module_name, objname = import_path.split(":") |
|
m = importlib.import_module(module_name) |
|
return getattr(m, objname) |
|
|