# Make a simple function that prints "version 1"
shell1$ echo 'def x(): print "version 1"' > mymodule.py
# Run the module
shell2$ python
>>> import mymodule
>>> mymodule.x()
version 1
# Change mymodule to print "version 2" (without exiting the python REPL)
shell2$ echo 'def x(): print "version 2"' > mymodule.py
# Back in that same python session
>>> reload(mymodule)
<module 'mymodule' from 'mymodule.pyc'>
>>> mymodule.x()
version 2
因此,如果你有一个模块a,它取决于模块b,并且b发生了变化,你必须' reload b '后面跟着' reload a '。如果你有两个相互依赖的模块,当这些模块是同一个包的一部分时,这是非常常见的,你不能同时重载它们:如果你重载p.a,它会得到一个对旧的p.b的引用,反之亦然。唯一的方法是在再次导入它们之前,通过从sys.modules中删除它们的项来同时卸载它们。这很烦人,并且有一些实际的陷阱与模块条目为None作为失败的相对导入标记有关。
#Make a simple function that prints "version 1"
shell1$ echo 'def x(): print "version 1"' > mymodule.py
# Run the module
shell2$ python
>>> import mymodule
>>> mymodule.x()
version 1
>>> x = mymodule.x
>>> x()
version 1
>>> x is mymodule.x
True
# Change mymodule to print "version 2" (without exiting the python REPL)
shell2$ echo 'def x(): print "version 2"' > mymodule.py
# Back in that same python session
>>> reload(mymodule)
<module 'mymodule' from 'mymodule.pyc'>
>>> mymodule.x()
version 2
>>> x()
version 1
>>> x is mymodule.x
False