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.
str(eval(obj_name))
, also wenn Sie benutzerdefinierte Klasse verwenden , können Sie hinzufügen Eigenschaft Überwachung __str__ dunder Methode. Wenn dies nicht der Fall ist, können Sie die Variable mit der zweiten Klasse "Monitoring" umschließen. Wenn Sie Einzelheiten wünschen, erstellen Sie eine neue Frage, da hier nicht mehr genügend Zeichen für den genauen Code vorhanden sind.Dies könnte Ihnen helfen, obwohl es nicht genau das ist, was Spyder bietet und viel einfacher ist:
Führen Sie who aus, um eine Liste aller derzeit definierten Variablen zu erhalten :
In [1]: foo = 'bar' In [2]: who foo
Führen Sie für weitere Details Folgendes aus :
In [3]: whos Variable Type Data/Info ---------------------------- foo str bar
Eine vollständige Liste der integrierten Funktionen finden Sie unter Magic Commands
quelle
Wenn Sie Jupyter-Notizbücher in Jupyter Lab verwenden, wurde viel über die Implementierung eines variablen Explorers / Inspektors diskutiert. Sie können das Problem hier verfolgen
Ab sofort ist eine Jupyter Lab-Erweiterung in Arbeit, die einen Spyder-ähnlichen Variablen-Explorer implementiert. Es basiert auf der Notebook-Erweiterung, die James in seiner Antwort erwähnt hat. Die Laborerweiterung (mit Installationsanweisungen) finden Sie hier: https://github.com/lckr/jupyterlab-variableInspector
quelle
Wenn Sie Visual Studio Code verwenden, ist dieser bereits vorhanden:
quelle