IPython Notebook führt alle geöffneten Zellen aus

8

Ich habe einen IPython-Noteboook und ich versuche, ihn so einzurichten, dass alle Zellen beim Öffnen des Notebooks automatisch ausgeführt werden.

Dieses Verhalten unterscheidet sich von der gespeicherten Ausgabe für Notizbücher, die Widgets enthalten. Widgets scheinen nur für mich gerendert zu werden, wenn die Zellen, die sie enthalten, ausgeführt werden. Betrachten Sie das folgende Beispiel:

%Vor%

Der Schieberegler wird erst angezeigt, wenn die Zelle ausgeführt wurde.

Ist dies etwas, das durch Notebook-Metadaten oder Konfigurationsdateien erreicht werden kann?

BEARBEITEN: Ссылка scheint so etwas zu tun: Beachten Sie, dass die Notizbücher nicht ausgeführt werden, wenn Sie öffnen die Seite und zeigen die Ausgabe an, wenn sie geöffnet wird.

EDIT2: Beispiel hinzufügen.

    
Markus Schanta 13.08.2015, 09:18
quelle

3 Antworten

3

Ich habe gerade einen Weg gefunden, das ganz einfach zu machen. Wenn Sie das nbextensions-Paket installieren ( Ссылка ), wird eine der Erweiterungen "Initialization cells" genannt und erlaubt Ihnen, bestimmte zu markieren Zellen, die automatisch ausgeführt werden, wenn das Notebook geladen wird.

    
thesamovar 23.09.2016, 17:27
quelle
9
  1. Fügen Sie das folgende Snippet in eine normale (Code-) Zelle ein,
  2. Führe es aus (drücke [Strg + Enter] ) und
  3. Speichern das Notebook.

Das nächste Mal, wenn Sie es (erneut) laden, Alle Zellen werden ausgeführt und ein Checkpoint wird mit ihren aktualisierten Ausgaben gespeichert.

%Vor%

Beachten Sie, dass Sie, wenn Sie die Ausgabe der obigen Zelle löschen, die Schritte 2 und 3 wiederholen müssen.

TIPP

Sie können diese angemesseneren Lösungen für das in Erwägung ziehen, was Sie wahrscheinlich erreichen möchten:

  • Jupyer Thebe : Code-Snippets in statische Seiten einbetten, die mit ipython-kernels-Backends kommunizieren.
  • nteract : Erstellen Sie Electron -basierte Anwendungen von Notebooks.
  • Dashboards : Die "offiziellen" Bemühungen, ein Raster von Notebook-Zellen-Ausgaben ("Dashboards") vorkonfigurieren zu können, package und serviere sie als eigenständige Web-Apps.

Sie finden eine Zusammenfassung der Situation in dieser Artikel .

Kontroverse

Ähnliche Fragen wurden gestellt vor in anderen Websites , aber in < a href="https://groups.google.com/forum/#!msg/jupyter/WHTnfAQw9gY/Lc0GZwwiBAAJ"> dieser googlegroup-Thread hat jemand eine Lösung eingereicht und der Gruppenmoderator hat ihn gelöscht ( !) , um das Leben auf der Erde zu bewahren :-) Also, sei vorsichtig damit!

    
ankostis 09.08.2016 17:17
quelle
2

Ich glaube nicht, dass das möglich ist.

ipython führt Code nur aus, wenn es 1) absichtlich und 2) vertrauenswürdig ist. Andernfalls werden Sie in Situationen geraten, in denen Sie Notebooks mit bösartigem Code laden.

Sie können Details zum Ipython-Sicherheitsmodell hier überprüfen: Ссылка . Speziell der Abschnitt, der über die Codeausführung beim Öffnen des Notebooks spricht: "Das Sicherheitsproblem, das wir lösen müssen, ist, dass kein Code ausgeführt werden sollte, nur weil ein Benutzer ein Notizbuch geöffnet hat, das er nicht geschrieben hat"

Während Sie explizites Vertrauen in ein Notebook setzen können, bin ich mir nicht sicher, ob dies dann auch eine automatische Codeausführung ermöglicht. Ich habe nichts dergleichen gesehen, aber vielleicht habe ich einfach nicht genug gesucht. Ich habe an anderer Stelle gesehen, dass die automatische Ausführung von Code nicht im Kernpaket ipython verfügbar ist. Überprüfen Sie dieses Problem hier: Ссылка

Jenseits des Vertrauens ist ein anderer Grund, warum ich das nicht für möglich halte, die 1) automatische Codeausführung ersetzt alle vorhandenen Ausgaben, die momentan im Notebook gespeichert sind, was vielleicht nicht ideal ist, und 2) einige Notizbücher können komplexen Code enthalten das ist rechenintensiv, das Sie nicht jedes Mal ausführen möchten, wenn Sie das Notebook öffnen.

    
Simon 13.08.2015 09:40
quelle