Come visualizzare l'output completo in Jupyter, non solo l'ultimo risultato?


115

Voglio che Jupyter stampi tutto l'output interattivo senza ricorrere alla stampa, non solo l'ultimo risultato. Come farlo?

Esempio :

a=3
a
a+1

Vorrei visualizzare

3
4


21
Non è usato molto spesso, ma in realtà c'è un'opzione di configurazione che dovrebbe farlo - impostata InteractiveShell.ast_node_interactivitysu 'all'nel file di configurazione del kernel IPython .
Thomas K,

Grazie Thomas, è quello che stavo cercando :)
mbh86

Esiste ! ! !
vasili111

Risposte:


179

Grazie a Thomas, ecco la soluzione che cercavo:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

2
Questo è un ottimo suggerimento. - Qual è il valore del flag per ripristinare solo l'ultima riga di output?
Reblochon Masque

12
Il valore predefinito è: "last_expr". Puoi trovare molte altre opzioni qui: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86

8
Per riferimento, le opzioni per questo sono "all", "none", "last" e "last_expr". La differenza tra "last" e "last_expr": se la tua cella termina con, diciamo, un ciclo contenente un'espressione, "last" ti mostrerà i risultati di tale espressione in ogni iterazione del ciclo. 'last_expr' (il valore predefinito) non lo mostrerà: mostrerà solo il risultato di una semplice espressione alla fine della cella.
Thomas K

1
Holy Moly ... questa caratteristica è un assassino.
flow2k

Il nuovo (ish) last_expr_or_assignè fantastico per fare demo! Non dovrai più ridigitare lo stesso articolo più volte solo per farlo stampare.
Henry Schreiner

33

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

1) Inserisci questo codice in una cella Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) In Windows, i passaggi seguenti rendono la modifica permanente. Dovrebbe funzionare per altri sistemi operativi. Potrebbe essere necessario modificare il percorso.

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

Crea un file ipython_config.py in profile_defaults con il codice seguente:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"

0

Per base notebook

Come altri hanno risposto, l'inserimento del seguente codice in una cella Jupyter Lab o Jupyter Notebook funzionerà:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Cambiamento permanente

Tuttavia, se desideri renderlo permanente e utilizzare Jupyter Lab, dovrai creare un file di configurazione del notebook IPython. Eseguire il seguente comando per farlo ( NON eseguire se si utilizza Jupyter Notebook - ulteriori dettagli di seguito):

ipython profile create

Se stai usando Jupyter Notebook, questo file dovrebbe essere già stato creato e non sarà necessario eseguirlo di nuovo. In effetti, l'esecuzione di questo comando potrebbe sovrascrivere le preferenze correnti.

Dopo aver creato questo file, per gli utenti di Jupyter Lab e Notebook, aggiungi il seguente codice al file C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Ho scoperto che non è necessario c = get_config()nelle versioni più recenti di Jupyter, ma se questo non funziona per te, aggiungi c = get_config()all'inizio del file.

Per altre opzioni di flag diverse da "all", visitare questo collegamento: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.