How can I check if code is executed in the IPython notebook? How can I check if code is executed in the IPython notebook? python python

How can I check if code is executed in the IPython notebook?


The following worked for my needs:

get_ipython().__class__.__name__

It returns 'TerminalInteractiveShell' on a terminal IPython, 'ZMQInteractiveShell' on Jupyter (notebook AND qtconsole) and fails (NameError) on a regular Python interpreter. The method get_python() seems to be available in the global namespace by default when IPython is started.

Wrapping it in a simple function:

def isnotebook():    try:        shell = get_ipython().__class__.__name__        if shell == 'ZMQInteractiveShell':            return True   # Jupyter notebook or qtconsole        elif shell == 'TerminalInteractiveShell':            return False  # Terminal running IPython        else:            return False  # Other type (?)    except NameError:        return False      # Probably standard Python interpreter

The above was tested with Python 3.5.2, IPython 5.1.0 and Jupyter 4.2.1 on macOS 10.12 and Ubuntu 14.04.4 LTS


To check if you're in a notebook, which can be important e.g. when determining what sort of progressbar to use, this worked for me:

def in_ipynb():    try:        cfg = get_ipython().config         if cfg['IPKernelApp']['parent_appname'] == 'ipython-notebook':            return True        else:            return False    except NameError:        return False


You can check whether python is in interactive mode with the following snippet [1]:

def is_interactive():    import __main__ as main    return not hasattr(main, '__file__')

I have found this method very useful because I do a lot of prototyping in the notebook. For testing purposes, I use default parameters. Otherwise, I read the parameters from sys.argv.

from sys import argvif is_interactive():    params = [<list of default parameters>]else:    params = argv[1:]

Following the implementation of autonotebook, you can tell whether you are in a notebook using the following code.

def in_notebook():    try:        from IPython import get_ipython        if 'IPKernelApp' not in get_ipython().config:  # pragma: no cover            return False    except ImportError:        return False    return True