Wie wird die volle Ausgabe in Jupyter angezeigt, nicht nur das letzte Ergebnis?

114

Ich möchte, dass Jupyter die gesamte interaktive Ausgabe druckt, ohne auf das Drucken zurückgreifen zu müssen, nicht nur das letzte Ergebnis. Wie es geht?

Beispiel:

a=3
a
a+1

Ich möchte anzeigen

3
4

mbh86
quelle
21
Es ist nicht sehr oft, aber in der Tat gibt es eine Konfigurationsoption verwendet , die dies tun sollen - Satz InteractiveShell.ast_node_interactivityauf 'all'in der Konfigurationsdatei Kernel IPython .
Thomas K
Danke Thomas, das habe ich gesucht :)
mbh86
Es existiert ! ! !
vasili111

Antworten:

177

Dank Thomas ist hier die Lösung, nach der ich gesucht habe:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
mbh86
quelle
2
Dies ist ein großartiger Tipp. - Was ist der Flag-Wert, um nur zur letzten Ausgabezeile zurückzukehren?
Reblochon Masque
12
Der Standardwert ist: 'last_expr'. Sie können viele andere Optionen hier finden: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86
8
Als Referenz sind die Optionen dafür 'all', 'none', 'last' und 'last_expr'. Der Unterschied zwischen 'last' und 'last_expr': Wenn Ihre Zelle beispielsweise mit einer Schleife endet, die einen Ausdruck enthält, zeigt 'last' die Ergebnisse dieses Ausdrucks in jeder Iteration der Schleife an. 'last_expr' (Standardeinstellung) zeigt dies nicht an: Es wird nur das Ergebnis eines bloßen Ausdrucks am Ende der Zelle angezeigt.
Thomas K
1
Holy Moly ... diese Funktion ist ein Killer.
flow2k
Das neue (ish) last_expr_or_assignist großartig für Demos! Sie müssen dasselbe Element nicht mehr mehrmals erneut eingeben, um es auch zum Drucken zu bringen.
Henry Schreiner
33

https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/

1) Platzieren Sie diesen Code in einer Jupyter-Zelle:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) In Windows wird die Änderung durch die folgenden Schritte dauerhaft. Sollte für andere Betriebssysteme funktionieren. Möglicherweise müssen Sie den Pfad ändern.

C:\Users\your_profile\\.ipython\profile_default

Erstellen Sie eine ipython_config.py-Datei in den profile_defaults mit dem folgenden Code:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"
Wilhelm
quelle
0

Pro Notebook-Basis

Wie andere geantwortet haben, funktioniert das Einfügen des folgenden Codes in eine Jupyter Lab- oder Jupyter Notebook-Zelle:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Ständiger Wechsel

Wenn Sie dies jedoch dauerhaft machen und Jupyter Lab verwenden möchten, müssen Sie eine IPython-Notebook-Konfigurationsdatei erstellen. Führen Sie dazu den folgenden Befehl aus ( NICHT ausführen, wenn Sie Jupyter Notebook verwenden - weitere Details siehe unten):

ipython profile create

Wenn Sie Jupyter Notebook verwenden, sollte diese Datei bereits erstellt worden sein und muss nicht erneut ausgeführt werden. Tatsächlich kann das Ausführen dieses Befehls überschrieben werden Ihre aktuellen Einstellungen .

Fügen Sie nach dem Erstellen dieser Datei für Jupyter Lab- und Notebook-Benutzer den folgenden Code zur Datei hinzu C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Ich habe festgestellt, dass c = get_config()in den neueren Versionen von Jupyter keine Notwendigkeit besteht , aber wenn dies bei Ihnen nicht funktioniert, fügen Sie die hinzuc = get_config() am Anfang der Datei hinzu.

Für weitere Flaggen andere Optionen als "all", besuchen Sie diesen Link: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Ani Aggarwal
quelle