AKTUALISIEREN
Scrollen Sie nach unten zu dem Abschnitt mit der Bezeichnung Update, um eine viel weniger komplizierte Methode zu erhalten.
ALTE ANTWORT
Hier ist ein Notizbuch, wie Sie Ihren eigenen Variableninspektor erstellen . Ich denke, es wurde zurückgeschrieben, als das Jupiter-Notebook als Ipython-Notebook bezeichnet wurde, aber es funktioniert mit der neuesten Version.
Ich werde den folgenden Code veröffentlichen, falls der Link unterbrochen wird.
import ipywidgets as widgets
from IPython.core.magics.namespace import NamespaceMagics
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_()
Führen Sie die folgenden Schritte aus:
inspector = VariableInspectorWindow(get_ipython())
inspector
Machen Sie es zu einem Javascript-Pop-out.
%%javascript
$('div.inspector')
.detach()
.prependTo($('body'))
.css({
'z-index': 999,
position: 'fixed',
'box-shadow': '5px 5px 12px -3px black',
opacity: 0.9
})
.draggable();
AKTUALISIEREN
Datum: 17. Mai 2017
@jfbercher hat einen nbextension-Variableninspektor erstellt. Den Quellcode finden Sie hier jupyter_contrib_nbextensions . Weitere Informationen finden Sie in den Dokumenten .
Installieren
Nutzer
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
Virtuelle Umgebung
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --sys-prefix
Aktivieren
jupyter nbextension enable varInspector/main
Hier ist ein Screenshot.