"""Quick code snippets for embedding IPython into other programs. See embed_class_long.py for full details, this file has the bare minimum code for cut and paste use once you understand how to use the system.""" #--------------------------------------------------------------------------- # This code loads IPython but modifies a few things if it detects it's running # embedded in another IPython session (helps avoid confusion) try: get_ipython except NameError: banner=exit_msg='' else: banner = '*** Nested interpreter ***' exit_msg = '*** Back in main IPython ***' # First import the embed function from IPython.terminal.embed import InteractiveShellEmbed # Now create the IPython shell instance. Put ipshell() anywhere in your code # where you want it to open. ipshell = InteractiveShellEmbed(banner1=banner, exit_msg=exit_msg) #--------------------------------------------------------------------------- # This code will load an embeddable IPython shell always with no changes for # nested embededings. from IPython import embed # Now embed() will open IPython anywhere in the code. #--------------------------------------------------------------------------- # This code loads an embeddable shell only if NOT running inside # IPython. Inside IPython, the embeddable shell variable ipshell is just a # dummy function. try: get_ipython except NameError: from IPython.terminal.embed import InteractiveShellEmbed ipshell = InteractiveShellEmbed() # Now ipshell() will open IPython anywhere in the code else: # Define a dummy ipshell() so the same code doesn't crash inside an # interactive IPython def ipshell(): pass