python - tutorial - Explorador de variables en Jupyter Notebook
jupyter notebook youtube (3)
¿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.
¿Ya se implementó esta función? Si es así, ¿cómo habilitarlo?
ACTUALIZAR
Desplácese hacia abajo 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 de variables . Creo que fue escrito cuando jupyter notebook se llamó ipython notebook pero funciona en la última versión.
Publicaré el código a continuación en caso de que se rompa el enlace.
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 = ''<table class="table table-bordered table-striped"><tr><th>Name</th><th>Type</th><th>Value</th></tr><tr><td>'' + /
''</td></tr><tr><td>''.join([''{0}</td><td>{1}</td><td>{2}''.format(v, type(eval(v)).__name__, str(eval(v))) for v in values]) + /
''</td></tr></table>''
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
Que sea una ventana emergente de JavaScript;
%%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 variables nbextension. El código fuente se puede ver aquí jupyter_contrib_nbextensions . Para más información ver los docs .
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;
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 who :
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 integradas, consulte Comandos mágicos
Si usa Jupyter Notebooks dentro de Jupyter Lab, se ha discutido mucho sobre la implementación de un explorador / inspector de variables. Puedes seguir el problema here
A partir de ahora hay una extensión de Jupyter Lab en proceso 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