Python reload, and IPython autoreload as well, is not working -
i using python + ipython data science. made folder contains modules wrote, organised in packages, like
python_workfolder | |---a | |---__init__.py | |---a1.py | |---a2.py | |---b | |---__init__.py | |---b1.py | |---b2.py | |---c | |---__init__.py | |---c1.py | |---c2.py | | |---script1.py |---script2.py
at beginning of each session ask ipython autoreload modules:
%load_ext autoreload %autoreload 2
now... let's a1.py contains class, a1
, want call 1 of scripts. in __init__.p
of package a
import module
import a1
then in script import class need
from a.a1 import a1
if there error in class a1 , modify it, there no way have python reload without restarting kernel.
i tried del a1
, del sys.modules['a1']
, del sys.modules['a']
. each time uses old version of class until don't restart kernel... can give me suggestions?
this funny. seems problem not due ipython pyzo (the ide i'm using). added testclass a1:
class testclass: def __init__(self): pass def disp(self): print('aaa')
this output running commands in ipython shell:
in [2]: a.a1 import testclass in [3]: t=testclass() in [4]: t.disp() aaa
now modify disp
print 'bbb'
in [5]: t.disp() bbb
so reloaded... because if skip running autoreload commands @ beginning, prints 'aaa' again. it's working.
instead if run commands through pyzo (create script, select lines , press f9 or right click on editor tab , select 'run file') doesn't reloaded!
in [2]: (executing lines 1 3 of "testscript.py") aaa
again modify disp
print 'bbb'
in [3]: (executing lines 1 3 of "testscript.py") aaa
Comments
Post a Comment