Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I make ipython exit from the calling code?

Tags:

python

ipython

I have some code like this:

form IPython import embed
for item in my_item_list:
    embed()

If I then run this program with

python my_example_program.py

on the first iteration through the loop I get put into an ipython shell and can inspect item and the environment as I would like to.

On quitting ipython the loop resumes and then I can inspect the next item and the environment as you would expect.

Is there a way for me to quit this code from within ipython (so that I am returned to a shell prompt). in any way short of opening another shell and killing the process?

like image 913
Mike H-R Avatar asked Feb 11 '15 11:02

Mike H-R


People also ask

How do you escape IPython?

Entering (and exiting) ipython You can also hit Ctrl-D to exit out of ipython. In fact, using your keyboard is the most highly recommended way.

How do you exit a code in Jupyter notebook?

Just import 'exit' from the code beneath into your jupyter notebook (IPython notebook) and calling 'exit()' should work. It will exit and letting you know that...


1 Answers

There's a %kill_embedded command in IPython.
It doesn't put you directly back to the shell prompt, but it skips the other embed instances.

from IPython import embed

for item in range(5):
    print 'embedding', item
    embed()

And here's the output:

 $ python my_example_program.py
embedding 0
Python 2.7.9 (default, Dec 13 2014, 22:30:33)
Type "copyright", "credits" or "license" for more information.

IPython 1.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: print item
0

In [2]: ^D

embedding 1
Python 2.7.9 (default, Dec 13 2014, 22:30:33)
Type "copyright", "credits" or "license" for more information.

IPython 1.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [2]: %kill_embedded
Are you sure you want to kill this embedded instance (y/n)? [y/N]  y
This embedded IPython will not reactivate anymore once you exit.

In [3]: print item
1

In [4]:

embedding 2
embedding 3
embedding 4
 $ 

UPD (06.03.2016): Seems that the %kill_embedded feature is kind of broken in IPython 4.0; you can use %exit_raise which will raise an exception and return back to the shell.

like image 128
Igor Hatarist Avatar answered Sep 23 '22 03:09

Igor Hatarist