¿Cómo mostrar la salida completa en Jupyter, no solo el último resultado?


115

Quiero que Jupyter imprima toda la salida interactiva sin recurrir a la impresión, no solo el último resultado. ¿Cómo hacerlo?

Ejemplo:

a=3
a
a+1

Me gustaria mostrar

3
4


21
No se usa con mucha frecuencia, pero de hecho hay una opción de configuración que debería hacer esto, establecida InteractiveShell.ast_node_interactivityen 'all'en el archivo de configuración del kernel de IPython .
Thomas K

Gracias Thomas, eso es lo que estaba buscando :)
mbh86

Existe ! ! !
vasili111

Respuestas:


179

Gracias a Thomas, aquí está la solución que estaba buscando:

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

2
Este es un gran consejo. - ¿Cuál es el valor de la bandera para revertir solo a la última línea de salida?
Reblochon Masque

12
El valor predeterminado es: 'last_expr'. Puede encontrar muchas otras opciones aquí: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86

8
Como referencia, las opciones para eso son 'todas', 'ninguna', 'última' y 'última_expr'. La diferencia entre 'last' y 'last_expr': si su celda termina con, digamos, un ciclo que contiene una expresión, 'last' le mostrará los resultados de esa expresión en cada iteración del ciclo. 'last_expr' (el predeterminado) no mostrará eso: solo mostrará el resultado de una expresión simple al final de la celda.
Thomas K

1
Santo cielo ... esta característica es un asesino.
flow2k

¡El nuevo (ish) last_expr_or_assignes increíble para hacer demostraciones! Ya no es necesario volver a escribir el mismo artículo varias veces solo para que también se imprima.
Henry Schreiner

33

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

1) Coloque este código en una celda de Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) En Windows, los pasos a continuación hacen que el cambio sea permanente. Debería funcionar para otros sistemas operativos. Puede que tenga que cambiar la ruta.

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

Cree un archivo ipython_config.py en profile_defaults con el siguiente código:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"

0

Por base de cuaderno

Como otros han respondido, poner el siguiente código en una celda de Jupyter Lab o Jupyter Notebook funcionará:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Cambio permanente

Sin embargo, si desea que esto sea permanente y utilizar Jupyter Lab, deberá crear un archivo de configuración de cuaderno IPython. Ejecute el siguiente comando para hacerlo ( NO lo ejecute si usa Jupyter Notebook; más detalles a continuación):

ipython profile create

Si está utilizando Jupyter Notebook, este archivo ya debería haberse creado y no será necesario volver a ejecutarlo. De hecho, ejecutar este comando puede sobrescribir sus preferencias actuales.

Una vez que haya creado este archivo, para los usuarios de Jupyter Lab y Notebook por igual, agregue el siguiente código al archivo C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Descubrí que no es necesario c = get_config()en las versiones más recientes de Jupyter, pero si esto no funciona para usted, agregue el c = get_config()al principio del archivo.

Para obtener más opciones de bandera "all", visite este enlace: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.