Как вывести в Jupyter полный вывод, а не только последний результат?


116

Я хочу, чтобы Jupyter печатал весь интерактивный вывод, не прибегая к печати, а не только последний результат. Как это сделать?

Пример :

a=3
a
a+1

Я хотел бы показать

3
4


21
Это не очень часто, но на самом деле есть вариант конфигурации , который должен сделать это - набор InteractiveShell.ast_node_interactivityдля 'all'в IPython Kernel конфигурационного файла .
Thomas K

Спасибо, Томас, это то, что я искал :)
mbh86

Это существует ! ! !
vasili111

Ответы:


182

Спасибо Томасу, вот решение, которое я искал:

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

2
Это отличный совет. - Какое значение флага позволяет вернуться только к последней строке вывода?
Reblochon Masque

12
Значение по умолчанию: last_expr. Здесь вы можете найти множество других вариантов: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86,

8
Для справки, варианты для этого: all, none, last и last_expr. Разница между last и last_expr: если ваша ячейка заканчивается, скажем, циклом, содержащим выражение, last будет показывать вам результаты этого выражения на каждой итерации цикла. «last_expr» (по умолчанию) этого не покажет: он отобразит только результат простого выражения в конце ячейки.
Thomas K

1
Святая моли ... эта особенность убийца.
flow2k 02

Новый (иш) last_expr_or_assignвеликолепен для создания демо! Больше не нужно набирать один и тот же элемент несколько раз, чтобы его тоже распечатать.
Генри Шрайнер,

33

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

1) Поместите этот код в ячейку Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) В Windows следующие шаги делают изменение постоянным. Должен работать для других операционных систем. Возможно, вам придется изменить путь.

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

Создайте файл ipython_config.py в profile_defaults со следующим кодом:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"

0

На основе ноутбука

Как ответили другие, размещение следующего кода в ячейке Jupyter Lab или Jupyter Notebook будет работать:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Постоянное изменение

Однако, если вы хотите сделать это постоянным и использовать Jupyter Lab, вам нужно будет создать файл конфигурации записной книжки IPython. Для этого выполните следующую команду ( НЕ запускайте, если вы используете Jupyter Notebook - подробности ниже):

ipython profile create

Если вы используете Jupyter Notebook, этот файл должен быть уже создан, и вам не нужно будет запускать его снова. Фактически, выполнение этой команды может перезаписать ваши текущие настройки.

Создав этот файл, как для пользователей Jupyter Lab, так и для пользователей Notebook, добавьте в файл следующий код C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Я обнаружил, что c = get_config()в новых версиях Jupyter нет необходимости , но если это не сработает для вас, добавьте c = get_config()в начало файла.

Чтобы "all"узнать о других вариантах флага , посетите эту ссылку: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.