python中动态import子目录里class的方法
最近开发一个项目,碰到了一个问题,就是需要动态导入子目录里自己写的class,而类名是每加一个文件就在数据库里取出名字加载的,所以需要在用到的时候加载,我们都知道,加载模块可以用系统的__import__()函数,或者直接用exec命令执行Import字符串,当然我喜欢用更方便一点的importlib,但是碰到个问题,最近我都是把写好的class文件放在主程序文件夹下的一个scripts文件夹里,直接用importlib.import_module方法貌似不支持带路径的模块。有点难受,最后想了个办法,就是把这个子目录加到系统的环境变量里,就没问题了,在程序里可以用sys模块来完成,这样写:
pwd = sys.path[0]
先用sys.path[0]获取当前脚本所在的绝对路径,然后append到sys.path数组里,即可:
sys.path.append(pwd+”/scripts”)
然后直接用importlib.import_module(‘文件名’)导入就可以了。
这样使用就会比较方便了。