2013-04-08 91 views
1
Files: 

File 1: metrobot.py 
File 2: irc.py 
File 3: cmd.py 

MetroBot.py啓動irc.py,irc.py生成一個while循環,然後使用cmd.py. 我嘗試從irc.py重新加載cmd模塊。重新加載之後,cmd.py中的更改仍然不會生效。重新加載自制模塊

刷新代碼片段:

if ":!reload" in self.buf: 
    reload(sys.modules['cmd']) 

我也試過

reload(cmd) 

無兩件的作品。

任何人都知道是什麼導致重新加載不工作,或另一種簡單的方法?這個腳本應該在任何時候都運行。

+0

你是如何運行代碼的?就在Python解釋器或其他方式?我假設metrobot導入irc和irc導入cmd? – 2013-04-08 10:37:10

+0

@Martin是的,這是正確的。就在Python解釋器和metrobot裏面導入irc和irc導入cmd。 cmd中的函數在irc中通過while循環運行 – 2013-04-08 10:49:48

回答

0

我創建了以下三個小的腳本來測試這一點,它的工作原理:

bot.py:

import irc 

def start(): 
    irc.run() 

irc.py:

import cmd, time 

def run(): 
    while 1: 
    print cmd.dothis() 
    reload(cmd) 
    time.sleep(1) 

cmd.py:

def dothis(): 
    return 1 

現在如果你運行bot.start()它將打印「1」每秒一次,如果我然後編輯cmd.py在某一點說return 2它打印「2」..很顯然,我想這是一個簡單的方法比任何代碼,但你我們需要張貼一些樣本來幫助我們更好地回答你。或者嘗試打斷你的代碼,並用你的代碼的精簡版來測試重新加載。