2014-09-06 43 views
0

我有一个可以动态导入外部模块的python应用程序。基本上,在某一点上运行此代码:动态回顾python模块的编译日期时间

dynamic_imported_modules[app_module_name]=__import__ (app_module_name) 

由于这些是web应用时,用户可以修改的模块的源代码,并尝试重新装入。 如果模块有错误,重新加载它可能没有成功,在这种情况下,Python会使用它的最后一个版本。所以,我有这样的:

try: 
    dynamic_imported_modules[app_module_name]=imp.reload(app_module_name) 
except: 
    ... 

是有办法当一个模块被成功地引进自动知道吗?

我不知道是否存在这样的属性:

print ('last imported time',dynamic_imported_modules[app_module_name].__compile_date_time__) 

的感谢!

回答

1

导入模块没有这样的元数据,没有。

为了防止Python从重用在发生故障时已经导入模块,从sys.modules首先除去它:

existing = sys.modules.pop(app_module_name, None) 

try: 
    dynamic_imported_modules[app_module_name] = importlib.import_module(app_module_name) 
except Exception: 
    if existing is None: 
     # we had successfully imported this before. 

另外,添加日期自己:

try: 
    dynamic_imported_modules[app_module_name] = imp.reload(app_module_name) 
    dynamic_imported_modules[app_module_name].__imported__ = datetime.datetime.now() 
except Exception: 
    # ... 

,并咨询该值;重新加载额外的全局将被保留。