In my project manage, I am embedding iPython with:
from IPython import start_ipython
from traitlets.config import Config
c = Config()
c.TerminalInteractiveShell.banner2 = "Welcome to my shell"
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
start_ipython(argv=[], user_ns={}, config=c)
It works well and opens my iPython console, but to leave ipython I can just type exit or exit() or press ctrl+D.
What I want to do is to add an exit hook or replace that exit command with something else.
Lets say I have a function.
def teardown_my_shell():
# things I want to happen when iPython exits
How do I register that function to be executed when I exit or even how to make exit to execute that function?
NOTE: I tried to pass user_ns={'exit': teardown_my_shell} and doesn't work.
Thanks.
解决方案
First thanks to @user2357112, I learned how to create an extension and register a hook, but I figured out that shutdown_hookis deprecated.
The right way is simply.
import atexit
def teardown_my_shell():
# things I want to happen when iPython exits
atexit.register(teardown_my_shell)