重新加载Python解释器

xra*_*alf 10 python interpreter reload

$ python
>>> import myapp
>>> reload(myapp)
<module 'myapp' from 'myapp.pyc'>
>>>
Run Code Online (Sandbox Code Playgroud)

ctrl+D

$ python
>>> from myapp import *
>>> reload(myapp)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'myapp' is not defined
Run Code Online (Sandbox Code Playgroud)

为什么这表现不一样?使用时如何重新加载from myapp import *

ala*_*and 19

来自http://docs.python.org/library/functions.html#reload:

如果一个模块使用from ... import ...从另一个模块导入对象,则为另一个模块调用reload()不会重新定义从它导入的对象 - 另一种方法是重新执行from语句,另一个是改为使用导入和限定名称(模块.名称).

所以,你应该做的事情如下:

from myapp import *
....
import myapp
reload(myapp)
from myapp import *
Run Code Online (Sandbox Code Playgroud)