def METHOD_NAME(self, willful=True):
    """Run an IPython shell."""
    try:
        import IPython
    except ImportError:
        if willful:
            req_missing(['IPython'], 'use the IPython console')
        raise  # That’s how _execute knows whether to try something else.
    else:
        site = self.context['site']  # NOQA
        nikola_site = self.context['nikola_site']  # NOQA
        conf = self.context['conf']  # NOQA
        commands = self.context['commands']  # NOQA
        IPython.embed(header=self.header.format('IPython'))