2013-04-08 82 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”..很显然,我想这是一个简单的方法比任何代码,但你我们需要张贴一些样本来帮助我们更好地回答你。或者尝试打断你的代码,并用你的代码的精简版来测试重新加载。