我有一个可以动态导入外部模块的python应用程序。基本上,在某个时刻我运行此代码:
dynamic_imported_modules[app_module_name]=__import__ (app_module_name)
由于这些是webapps,用户可以修改模块的源代码并尝试重新加载它。 如果模块有错误,重新加载它可能没有成功,在这种情况下,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__)
谢谢!
答案 0 :(得分: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:
# ...
并咨询该价值;在重新加载时,将保留额外的全局。