문제

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.

다른 팁

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top