重新加载自制模块

时间:2013-04-08 10:18:55

标签: python python-2.7

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)

两者都不起作用。

任何人都知道是什么导致重新加载不起作用,或者另一种简单的方法?此脚本应始终运行。

1 个答案:

答案 0 :(得分: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”。显然我是想象这比你所拥有的任何代码都简单,但是你需要发布一些样本来帮助我们更好地回答你。或者尝试破解代码并使用精简代码测试重新加载。