Explorador de variables en el cuaderno de Jupyter

¿Hay un explorador de variables en Jupyter (IPython) como en Spyder? Es muy incómodo tener que imprimir la lista de variables todo el tiempo cada vez que ejecuto el código de prueba.

¿Se ha implementado esta característica todavía? Si es así, ¿cómo habilitarlo?

ACTUALIZAR

Desplácese hasta la sección etiquetada actualización para un método mucho menos complicado.

ANTIGUA RESPUESTA

Aquí hay un cuaderno sobre cómo hacer su propio inspector variable . Creo que se escribió cuando el bloc de notas jupyter se llamaba ipython, pero funciona con la última versión.

Voy a publicar el código a continuación en caso de que el enlace se rompa.

import ipywidgets as widgets # Loads the Widget framework. from IPython.core.magics.namespace import NamespaceMagics # Used to query namespace. # For this example, hide these names, just to avoid polluting the namespace further get_ipython().user_ns_hidden['widgets'] = widgets get_ipython().user_ns_hidden['NamespaceMagics'] = NamespaceMagics class VariableInspectorWindow(object): instance = None def __init__(self, ipython): """Public constructor.""" if VariableInspectorWindow.instance is not None: raise Exception("""Only one instance of the Variable Inspector can exist at a time. Call close() on the active instance before creating a new instance. If you have lost the handle to the active instance, you can re-obtain it via `VariableInspectorWindow.instance`.""") VariableInspectorWindow.instance = self self.closed = False self.namespace = NamespaceMagics() self.namespace.shell = ipython.kernel.shell self._box = widgets.Box() self._box._dom_classes = ['inspector'] self._box.background_color = '#fff' self._box.border_color = '#ccc' self._box.border_width = 1 self._box.border_radius = 5 self._modal_body = widgets.VBox() self._modal_body.overflow_y = 'scroll' self._modal_body_label = widgets.HTML(value = 'Not hooked') self._modal_body.children = [self._modal_body_label] self._box.children = [ self._modal_body, ] self._ipython = ipython self._ipython.events.register('post_run_cell', self._fill) def close(self): """Close and remove hooks.""" if not self.closed: self._ipython.events.unregister('post_run_cell', self._fill) self._box.close() self.closed = True VariableInspectorWindow.instance = None def _fill(self): """Fill self with variable information.""" values = self.namespace.who_ls() self._modal_body_label.value = '
NameTypeValue
' + \ '
'.join(['{0}{1}{2}'.format(v, type(eval(v)).__name__, str(eval(v))) for v in values]) + \ '
' def _ipython_display_(self): """Called when display() or pyout is used to display the Variable Inspector.""" self._box._ipython_display_()

Ejecutar en línea con lo siguiente:

 inspector = VariableInspectorWindow(get_ipython()) inspector 

Haz que sea un javascript emergente;

 %%javascript $('div.inspector') .detach() .prependTo($('body')) .css({ 'z-index': 999, position: 'fixed', 'box-shadow': '5px 5px 12px -3px black', opacity: 0.9 }) .draggable(); 

ACTUALIZAR

Fecha: 17 de mayo de 2017

@jfbercher creó un inspector de variable nbextension. El código fuente se puede ver aquí jupyter_contrib_nbextensions . Para más información ver los documentos .

Instalar

Usuario

 pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user 

Ambiente virtual

 pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --sys-prefix 

Habilitar

 jupyter nbextension enable varInspector/main 

Aquí hay una captura de pantalla;

introduzca la descripción de la imagen aquí

Esto podría ayudarlo, aunque no es exactamente lo que ofrece Spyder y es mucho más simple:

Para obtener una lista de todas las variables definidas actualmente, ejecute quién :

 In [1]: foo = 'bar' In [2]: who foo 

Para más detalles, ejecute whos :

 In [3]: whos Variable Type Data/Info ---------------------------- foo str bar 

Para obtener una lista completa de las funciones incorporadas, consulte Comandos mágicos.

Si usa Jupyter Notebooks dentro de Jupyter Lab , ha habido mucha discusión sobre la implementación de un explorador / inspector de variables. Puedes seguir el tema aquí.

A partir de este momento, hay una extensión de Jupyter Lab en las obras que implementa un explorador de variables similar a Spyder. Se basa en la extensión del cuaderno que James mencionó en su respuesta. Puede encontrar la extensión de laboratorio (con instrucciones de instalación) aquí: https://github.com/lckr/jupyterlab-variableInspector

introduzca la descripción de la imagen aquí