I'm working from inside an ipython shell and often need to reload the script files that contain my functions-under-construction.
Inside my main.py I have:
def myreload(): execfile("main.py") execfile("oth开发者_运维百科erfile.py")
Calling myreload() works fine if I have already ran in the same ipython session the execfile commands directly.
However, for some reason, if the session is fresh and I just called execfile("main.py"), then myreload() doesn't actually make the functions from inside otherfile.py available. It doesn't throw any error though.
Any ideas?
Functions create a new scope. execfile()
runs the script in the current scope. What you are doing will not work.
If you seek to learn the actual correct usage of ipython (i.e. in interactive mode), then you should use magic commands like:
%run
and
%edit
Check help for those functions with %run?
. This provides explicit examples.
See also http://ipython.org/ipython-doc/stable/interactive/tutorial.html
精彩评论