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)

两者都不起作用。

任何人都知道是什么原因导致重新加载不起作用,或者其他简单的方法?该脚本旨在始终运行。

4

1 回答 1

0

我创建了以下三个迷你脚本来测试它并且它可以工作:

机器人.py:

import irc

def start():
  irc.run()

irc.py:

import cmd, time

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

命令.py:

def dothis():
  return 1

现在,如果您运行 bot.start() 它将每秒打印一次“1”,然后如果我在某个时候编辑 cmd.py 说它return 2打印“2”.. 显然我想象这比无论您拥有什么代码,但您需要发布一些示例以帮助我们更好地回答您。或者尝试分解您的代码并使用精简版本的代码测试重新加载。

于 2013-04-08T10:56:45.853 回答