模块动态导入

# def module_resolver(namespace):
#     namespace_parts = namespace.split(".")
#     module_name = ".".join(namespace_parts[0:-1])
#     cls_name = namespace_parts[-1]
#     try:
#         module = __import__(module_name, fromlist=["*"])
#         if hasattr(module, cls_name):
#             return getattr(module, cls_name)
#     except Exception as ex:
#         app_log.error("resolve %s failed with exception %s" % (namespace, ex))

# 建议使用方式二动态导入模块
def module_resolver(namespace):
    from importlib import import_module
    namespace_parts = namespace.split(".")
    module_name = ".".join(namespace_parts[0:-1])
    cls_name = namespace_parts[-1]
    try:
        module = import_module(module_name)
        if hasattr(module, cls_name):
            return getattr(module_name, cls_name)
    except Exception as ex:
        app_log.error("resolve %s failed with exception %s" % (namespace, ex))
原文地址:https://www.cnblogs.com/52-qq/p/14830799.html