这几天有个需求,需要在程序中动态的获取字符,再用这些字符拼成包名。然后再导入,最终选则了如下方法:
for eachrule in rulelist:
try:
print "eachrule:"+str(eachrule)
fileName = firstName+"_"+str(eachrule)
pluginName = xCheckPackageName+"."+fileName
importstring = "from "+pluginName + " import " +fileName #文件名等于方法名
#print "importstring:"+importstring
<span style="color:#FF0000;"> exec importstring #这里使用字符串拼凑的包名加载包
print "plugin fucking",fileName,xCheckObj
eval(fileName)(xCheckObj)</span> #在这里动态的调用用字符串拼凑的方法
except ImportError:
#print "mo module named ",fileName
continue
except:
info=sys.exc_info()
traceback.print_exc()
print info[0],":",info[1]
continue
<span style="color:#FF0000;">
</span>
使用
<span style="color:#FF0000;">exec importstring</span>
这样就能动态的加载python包了。