An embedded IPython shell.
- Brian Granger
- Fernando Perez
class IPython.terminal.embed.EmbeddedMagics(shell=None, **kwargs)
%kill_embedded : deactivate for good the current embedded IPython.
This function (after asking for confirmation) sets an internal flag so
that an embedded IPython will never activate again. This is useful to
permanently disable a shell that is being called inside a loop: once
you’ve figured out what you needed from it, you may then kill it and
the program will then continue to run without the interactive shell
class IPython.terminal.embed.InteractiveShellEmbed(config=None, ipython_dir=None, user_ns=None, user_module=None, custom_exceptions=((), None), usage=None, banner1=None, banner2=None, display_banner=None, exit_msg=u'', user_global_ns=None)
__init__(config=None, ipython_dir=None, user_ns=None, user_module=None, custom_exceptions=((), None), usage=None, banner1=None, banner2=None, display_banner=None, exit_msg=u'', user_global_ns=None)
mainloop(local_ns=None, module=None, stack_depth=0, display_banner=None, global_ns=None, compile_flags=None)
Embeds IPython into a running python program.
Working local namespace (a dict) and module (a module or similar
object). If given as None, they are automatically taken from the scope
where the shell was called, so that program variables become visible.
stack_depth : int
How many levels in the stack to go to looking for namespaces (when
local_ns or module is None). This allows an intermediate caller to
make sure that this function gets the namespace from the intended
level in the stack. By default (0) it will get its locals and globals
from the immediate caller.
A bit field identifying the __future__ features
that are enabled, as passed to the builtin compile() function.
If given as None, they are automatically taken from the scope where
the shell was called.
Call this to embed IPython at the current point in your program.
The first invocation of this will create an InteractiveShellEmbed
instance and then call it. Consecutive calls just call the already
If you don’t want the kernel to initialize the namespace
from the scope of the surrounding function,
and/or you want to load full IPython configuration,
you probably want IPython.start_ipython() instead.
Here is a simple example:
from IPython import embed
a = 10
b = 20
c = 30
d = 40
Full customization can be done by passing a Config in as the