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?
Functions create a new scope. execfile() runs the script in the current scope. What you are doing will not work.
Python shell and execfile scope