Question

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("otherfile.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?

Was it helpful?

Solution

Functions create a new scope. execfile() runs the script in the current scope. What you are doing will not work.

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top