Como exibir a saída completa no Jupyter, não apenas o último resultado?

115

Quero que o Jupyter imprima toda a saída interativa sem recorrer à impressão, não apenas o último resultado. Como fazer isso?

Exemplo:

a=3
a
a+1

Eu gostaria de mostrar

3
4

mbh86
fonte
21
Não é usado com muita freqüência, mas na verdade há uma opção de configuração que deve fazer isso - definida InteractiveShell.ast_node_interactivitycomo 'all'no arquivo de configuração do kernel do IPython .
Thomas K
Obrigado Thomas, é isso que eu estava procurando :)
mbh86
Isso existe ! ! !
vasili111

Respostas:

179

Graças a Thomas, aqui está a solução que eu procurava:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
mbh86
fonte
2
Esta é uma ótima dica. - Qual é o valor do sinalizador para reverter apenas para a última linha de saída?
Reblochon Masque
12
O valor padrão é: 'last_expr'. Você pode encontrar muitas outras opções aqui: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86
8
Para referência, as opções para isso são 'all', 'none', 'last' e 'last_expr'. A diferença entre 'última' e 'última_expr': se sua célula termina com, digamos, um loop contendo uma expressão, 'último' irá mostrar os resultados daquela expressão em cada iteração do loop. 'last_expr' (o padrão) não mostrará isso: somente mostrará o resultado de uma expressão vazia no final da célula.
Thomas K
1
Caramba ... esse recurso é um assassino.
flow2k
O novo (ish) last_expr_or_assigné incrível para fazer demos! Chega de redigitar o mesmo item várias vezes apenas para imprimi-lo também.
Henry Schreiner
33

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

1) Coloque este código em uma célula Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) No Windows, as etapas abaixo tornam a alteração permanente. Deve funcionar para outros sistemas operacionais. Você pode ter que mudar o caminho.

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

Faça um arquivo ipython_config.py em profile_defaults com o seguinte código:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"
William
fonte
0

Por base de notebook

Como outros responderam, colocar o seguinte código em uma célula do Jupyter Lab ou do Jupyter Notebook funcionará:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Mudança permanente

No entanto, se quiser tornar isso permanente e usar o Jupyter Lab, você precisará criar um arquivo de configuração de notebook IPython. Execute o seguinte comando para fazer isso ( NÃO execute se você usar o Jupyter Notebook - mais detalhes abaixo):

ipython profile create

Se você estiver usando o Jupyter Notebook, este arquivo já deve ter sido criado e não haverá necessidade de executá-lo novamente. Na verdade, a execução desse comando pode sobrescrever suas preferências atuais.

Depois de criar este arquivo, para usuários do Jupyter Lab e Notebook, adicione o seguinte código ao arquivo C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Descobri que não há necessidade de c = get_config()nas versões mais recentes do Jupyter, mas se isso não funcionar para você, adicione o c = get_config()ao início do arquivo.

Para obter mais opções de sinalização além de "all", visite este link: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Ani Aggarwal
fonte