假设我有一个导入main.py
的Python脚本othermodule.py
。是否可以在reload(othermodule)
中编写main.py
,以便在我对othermodule.py
进行更改时,我仍然可以reload(main)
,然后重新加载其他模块?
答案 0 :(得分:4)
嗯,这并不是那么简单。假设你有main.py
这样......
import time
import othermodule
foo = othermodule.Foo()
while 1:
foo.foo()
time.sleep(5)
reload(othermodule)
......和othermodule.py
这样......
class Foo(object):
def foo(self):
print 'foo'
...然后,如果您将othermodule.py
更改为此...
class Foo(object):
def foo(self):
print 'bar'
... main.py
仍在运行时,它会继续打印foo
,而不是bar
,因为foo
中的main.py
个实例将继续使用旧的类定义,尽管你可以通过像这样main.py
来避免这种情况......
import time
import othermodule
while 1:
foo = othermodule.Foo()
foo.foo()
time.sleep(5)
reload(othermodule)
重点是,您需要了解导入模块的各种更改,这些更改会导致reload()
出现问题。
可能有助于在原始问题中包含一些源代码,但在大多数情况下,重启整个脚本可能是最安全的。
答案 1 :(得分:1)
Python已经reload()
还不够好?
从您的评论中,听起来好像您可能对ipython
中的deep reload功能感兴趣,但我会谨慎使用它。