Як відобразити повний вихід у Jupyter, не лише останній результат?


115

Я хочу, щоб Юпітер надрукував увесь інтерактивний вихід, не вдаючись до друку, не лише останній результат. Як це зробити?

Приклад:

a=3
a
a+1

Я хотів би показати

3
4


21
Це не дуже часто, але насправді є варіант конфігурації , який повинен зробити це - набір InteractiveShell.ast_node_interactivityдля 'all'в IPython Kernel конфігураційного файлу .
Томас К

Дякую Томасе, ось що я шукав :)
mbh86

Він існує! ! !
vasili111

Відповіді:


179

Завдяки Томасу, ось таке рішення я шукав:

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

2
Це чудова порада. - Яке значення прапора потрібно повернути лише до останнього рядка виводу?
Маска Реблошона

12
Значенням за замовчуванням є: 'last_expr'. Тут ви можете знайти багато інших варіантів: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86

8
Для довідки, параметри для цього є "всі", "жоден", "останній" та "останній_expr". Різниця між "останнім" і "останнім_expr": якщо ваша клітина закінчується, скажімо, циклом, що містить вираз, "last" покаже вам результати цього виразу в кожній ітерації циклу. 'last_expr' (за замовчуванням) не показуватиме це: він відображатиме лише результат голого виразу в кінці комірки.
Thomas K

1
Святий молі ... ця риса є вбивцею.
flow2k

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

33

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

1) Розмістіть цей код у комірці Юпітера:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) У Windows наведені нижче дії роблять зміни постійними. Має працювати для інших операційних систем. Можливо, вам доведеться змінити шлях.

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

Зробіть файл ipython_config.py у профілі_дефолти із таким кодом:

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, вам потрібно буде створити конфігураційний файл ноутбука IPython. Для цього виконайте таку команду ( НЕ запускайте, якщо використовуєте ноутбук Юпітер - детальніше нижче):

ipython profile create

Якщо ви використовуєте ноутбук Jupyter, цей файл уже повинен був бути створений, і запускати його знову не потрібно. Фактично, виконання цієї команди може замінити ваші поточні налаштування.

Після створення цього файлу для користувачів «Лабораторії Юпітера» та «Ноутбука» додайте у файл такий код 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#config Portrait-InteractiveShell.ast_node_interactivity

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.