2016-11-19 11 views
4

Ich habe ein Jupyter Notebook. In der Zelle 1 habe ich viele Funktionen definiert, die vor anderen Dingen laufen müssen. Dann fange ich in den folgenden Zellen an, das Ergebnis zu präsentieren. Allerdings, wenn ich in HTML konvertieren, ist dieses Layout hässlich. Leser müssen lange scrollen, um das Ergebnis zu sehen, und sie interessieren sich überhaupt nicht für die Funktionen. Aber ich muss den Code in diese Reihenfolge bringen, weil ich diese Funktionen brauche.Python Jupyter Notebook: Zellausführungsreihenfolge angeben

Also meine Frage ist, gibt es eine Möglichkeit, ich konnte die Reihenfolge der Zellen steuern, nachdem ich alle run klicken? oder gibt es eine Möglichkeit, etwas wie das Folgende zu tun. Ich lege alle meine Funktionsdefinitionen in Zelle 20, dann könnte ich in Zelle 1 sagen Jupyter etwas wie "run Zelle 20".

Nur neugierig, ob dies machbar ist. Danke.

+0

Es gibt eine Erweiterung namens ['init_cell'] (https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/master/src/jupyter_contrib_nbextensions/nbextensions/init_cell), die der Symbolleiste eine Schaltfläche hinzufügt und" initialisiert " "oder führt bestimmte Zellen aus, wenn das Notebook neu gestartet wird. Dies erfordert die Installation von nbextensions, falls diese nicht bereits installiert sind, und die Anzeige bestimmter Zellen über das Menü Ansicht> Zellensymbolleiste> Initialisierungszelle. – pylang

+0

Ich persönlich führe die Notebooks zweimal durch, um das Problem zu lösen, das Sie haben (mit 'if', um nur die ersten Zellen in der zweiten Iteration auszuführen). – pistache

+0

@pistache eigentlich werde ich das Notebook täglich laufen lassen. Also möchte ich es mit nbconvert automatisieren. – JOHN

Antwort

3

Eine solche Funktionalität ist (soweit ich weiß) in Jupyter noch nicht verfügbar. Wenn Sie jedoch große Bedenken haben, zu Beginn viele Funktionsdefinitionen zu haben, die Sie ausblenden möchten, können Sie folgende Alternative verwenden:

  • Definieren Sie die Funktionen in einem Python-Skript.
  • Fügen Sie die Skriptausführung zur ersten Codierung Zelle Ihres Notebooks
  • die verbleibende des Codes zu den aufeinanderfolgenden Zellen des Notebooks
  • Optional hinzufügen, zeigen am Ende des Notebooks dessen Inhalt für die Bequemlichkeit der Zuschauer.
  • +0

    Wenn du "noch" sagst, meinst du, dass sie in zukünftigen Versionen enthalten sein werden? Oder in "jupyterlab"? Ja, Importieren als ein Modul klingt wie das Beste, was ich jetzt tun könnte. – JOHN

    +0

    Ich kam hier auf der Suche nach einer Möglichkeit, Präambel am Ende zu platzieren, wegen [dieser nachdenklichen Artikel über alphabetische Programmierung und Code-Präsentation Reihenfolge] (https://getpocket.com/a/read/730903290). Ich mag diese Antwort, weil es _mostly_ die Details asside bewegt, aber dann überlegt, sie danach anzuzeigen. Sehr gute Work-around! – mike

    4

    Ich würde die Funktionen als separates Modul speichern, dann importieren Sie dieses Modul am Anfang.

    0

    Verwenden Sie die Runtools nbextension, mit der Sie ausgewählte Zellen ausführen können.