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.
Googling IPython exit hook turns up
IPython.core.hooks
. From that documentation, it looks like you can define an exit hook in an IPython extension and register it with the IPython instance'sset_hook
method:You'll have to add the extension to your
c.InteractiveShellApp.extensions
.First thanks to @user2357112, I learned how to create an extension and register a hook, but I figured out that
shutdown_hook
is deprecated.The right way is simply.