how to "reimport" module to python then code be changed after import
For Python 2.x
reload(foo)
For Python 3.x
import importlib
import foo #import the module here, so that it can be reloaded.
importlib.reload(foo)
In addition to gnibbler's answer:
This changed in Python 3 to:
>>> import imp
>>> imp.reload(foo)
As @onnodb points out, imp
is deprecated in favor of importlib
since Python 3.4:
>>> import importlib
>>> importlib.reload(foo)
IPython3's autoreload feature works just right.
I am using the actual example from the webpage. First load the 'autoreload' feature.
In []: %load_ext autoreload
In []: %autoreload 2
Then import the module you want to test:
In []: import foo
In []: foo.some_function()
Out[]: 42
Open foo.py in an editor and change some_function to return 43
In []: foo.some_function()
Out[]: 43
It also works if you import the function directly.
In []: from foo import some_function
In []: some_function()
Out[]: 42
Make change in some_function to return 43.
In []: some_function()
Out[]: 43
If you want this to happen automatically, there is the autoreload module that comes with iPython.