diff --git a/IPython/html/nbconvert/handlers.py b/IPython/html/nbconvert/handlers.py index dc4d2e48c..2fb6f4586 100644 --- a/IPython/html/nbconvert/handlers.py +++ b/IPython/html/nbconvert/handlers.py @@ -61,7 +61,10 @@ def get_exporter(format, **kwargs): # should this be 400? raise web.HTTPError(404, u"No exporter for format: %s" % format) - return Exporter(**kwargs) + try: + return Exporter(**kwargs) + except Exception as e: + raise web.HTTPError(500, "Could not construct Exporter: %s" % e) class NbconvertFileHandler(IPythonHandler): diff --git a/IPython/html/services/nbconvert/handlers.py b/IPython/html/services/nbconvert/handlers.py index fb79aa54d..1c74de5d6 100644 --- a/IPython/html/services/nbconvert/handlers.py +++ b/IPython/html/services/nbconvert/handlers.py @@ -3,10 +3,6 @@ import json from tornado import web from ...base.handlers import IPythonHandler, json_errors -try: - from IPython.nbconvert.exporters.export import exporter_map -except ImportError: - exporter_map = {} class NbconvertRootHandler(IPythonHandler): SUPPORTED_METHODS = ('GET',) @@ -14,6 +10,10 @@ class NbconvertRootHandler(IPythonHandler): @web.authenticated @json_errors def get(self): + try: + from IPython.nbconvert.exporters.export import exporter_map + except ImportError as e: + raise web.HTTPError(500, "Could not import nbconvert: %s" % e) res = {} for format, exporter in exporter_map.items(): res[format] = info = {}