2014-09-06 40 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: 
    # ... 

,並諮詢該值;重新加載額外的全局將被保留。