最近要支持一个功能,让用户自定义一些动态的逻辑,索性让用户自己写代码执行,所以需要做到让用户的代码动态执行起来。下面列举一下核心逻辑。

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/usr/bin/env python3
import importlib
def new_module(mod_name):

    spec = importlib.machinery.ModuleSpec(mod_name,None)
    return importlib.util.module_from_spec(spec)

def create_module(mod_name, object_list):

    mod = new_module(mod_name)
    for obj in object_list:
        setattr(mod,obj.__name__, obj)

    return mod

这个脚本主要是用来动态创建module,并且把对象放到module中,这样就可以在其他地方调用了。

参考文章