Comment afficher la sortie complète dans Jupyter, pas seulement le dernier résultat?

115

Je veux que Jupyter imprime toute la sortie interactive sans recourir à l'impression, pas seulement le dernier résultat. Comment faire?

Exemple :

a=3
a
a+1

Je voudrais afficher

3
4

mbh86
la source
21
Il est pas utilisé très souvent, mais en fait il y a une option de configuration qui devrait le faire - ensemble InteractiveShell.ast_node_interactivitypour 'all'dans le fichier de configuration de IPython .
Thomas K
Merci Thomas, c'est ce que je cherchais :)
mbh86
Ça existe ! ! !
vasili111

Réponses:

180

Grâce à Thomas, voici la solution que je recherchais:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
mbh86
la source
2
C'est un bon conseil. - Quelle est la valeur de l'indicateur pour revenir à la dernière ligne de sortie uniquement?
Masque Reblochon
12
La valeur par défaut est: 'last_expr'. Vous pouvez trouver beaucoup d'autres options ici: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86
8
Pour référence, les options pour cela sont «all», «none», «last» et «last_expr». La différence entre «last» et «last_expr»: si votre cellule se termine par, disons, une boucle contenant une expression, «last» vous montrera les résultats de cette expression à chaque itération de la boucle. 'last_expr' (la valeur par défaut) n'affichera pas cela: il affichera uniquement le résultat d'une expression nue à la fin de la cellule.
Thomas K
1
Holy moly ... cette fonctionnalité est un tueur.
flow2k
Le nouveau (ish) last_expr_or_assignest incroyable pour faire des démos! Plus besoin de retaper le même élément plusieurs fois simplement pour l'imprimer.
Henry Schreiner le
33

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

1) Placez ce code dans une cellule Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) Sous Windows, les étapes ci-dessous rendent le changement permanent. Devrait fonctionner pour d'autres systèmes d'exploitation. Vous devrez peut-être changer le chemin.

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

Créez un fichier ipython_config.py dans profile_defaults avec le code suivant:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"
William
la source
0

Base par ordinateur portable

Comme d'autres l'ont répondu, mettre le code suivant dans une cellule Jupyter Lab ou Jupyter Notebook fonctionnera:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Changement permanent

Cependant, si vous souhaitez rendre cela permanent et utiliser Jupyter Lab, vous devrez créer un fichier de configuration de notebook IPython. Exécutez la commande suivante pour ce faire ( NE PAS exécuter si vous utilisez Jupyter Notebook - plus de détails ci-dessous):

ipython profile create

Si vous utilisez Jupyter Notebook, ce fichier doit déjà avoir été créé et il ne sera pas nécessaire de l'exécuter à nouveau. En fait, l'exécution de cette commande peut écraser vos préférences actuelles.

Une fois ce fichier créé, pour les utilisateurs de Jupyter Lab et de Notebook, ajoutez le code suivant au fichier C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

J'ai trouvé qu'il n'était pas nécessaire d'utiliser c = get_config()les nouvelles versions de Jupyter, mais si cela ne fonctionne pas pour vous, ajoutez le c = get_config()au début du fichier.

Pour plus d'options d'indicateur autres que "all", visitez ce lien: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Ani Aggarwal
la source