2012-02-05 138 views
1

我試圖重新加載一個已經裝sys.modules中內模塊模塊,但不知何故,重裝()似乎不工作。 (編譯()+負載會雖然工作,我仍然無法使用,因爲它是通過扭曲代碼重裝)蟒蛇重裝無法找到sys.modules中

for loader, module_name, is_pkg in pkgutil.walk_packages(main_module.__path__): 
    if(not module_name in sys.modules): 
     module = loader.find_module(module_name).load_module(module_name) 
    else: 
     module = sys.modules.get(module_name) 
     #this is unhelpful 
     #sys.path.append(module.__path__) 
     #this works 
     #imp.find_module(module.__name__, module.__path__) 
     #this doesn't 
     reload(module) 

Traceback (most recent call last): 
    File "/usr/lib64/python2.7/site-packages/celery/execute/trace.py", line 36, in trace 
    return cls(states.SUCCESS, retval=fun(*args, **kwargs)) 
    File "/usr/lib64/python2.7/site-packages/celery/app/task/__init__.py", line 232, in __call__ 
    return self.run(*args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/celery/app/__init__.py", line 172, in run 
    return fun(*args, **kwargs) 
    File "/home/myuser/Dropbox/job-pipe/job_pipe/apps/tasks/crawl.py", line 71, in crawl 
    crawler = CrawlerScript() 
    File "/home/myuser/Dropbox/job-pipe/job_pipe/apps/tasks/crawl.py", line 37, in __init__ 
    reload(module) 
ImportError: No module named example 

什麼是重載的正確方法?我認爲這是由find_module引起的,儘管它似乎正常工作,並且錯誤沒有幫助。

謝謝。

+0

你怎麼導入模塊? – Carpetsmoker 2012-02-05 12:36:53

+0

導入模塊的代碼位於使用module = loader.find_module(module_name).load_module(module_name)導入的代碼之上。在重新加載之前重新導入模塊並不能解決問題,重新加載仍然會崩潰 – user1190564 2012-02-05 14:52:43

+0

您應該發佈完整的回溯,而不僅僅是異常。 – 2012-02-06 13:22:48

回答

0

一旦您已加載模塊,重新加載它,你必須做

module = reload(module) 
+0

這正是重新加載不起作用... – user1190564 2012-02-05 14:49:39