3.1. Introdução

O Projeto Jupyter fornece diversas ferramentas para que os usuários utilizem um ambiente de computação científica de maneira interativa. Uma das ferramentas desse ecossistema é o terminal IPython [77], que fornece um terminal interativo com mais recursos do que o terminal padrão do Python. Esse terminal é capaz de destacar símbolos da linguagem Python, possui recursos avançados de auto-completar (tab completion), que inclui introspecção do objeto em questão para determinar atributos e métodos, manutenção do histórico de comandos, capacidade de execução de comandos do sistema operacional integrados com a linguagem, além de forte suporte para visualização interativa e computação distribuída e paralela. A Figura 3.1 mostra esse terminal realçando identificadores, palavras-chave e literais, de acordo com a sintaxe da linguagem Python, além do recurso de auto-completar. O IPython numera os comandos de entrada (In[n]) e os resultados produzidos (Out[n]) fornecendo um mecanismo de histórico bem sofisticado, com possibilidade de acesso aos comandos através da navegação das setas direcionais do teclado, entre outras facilidades.

Janela do terminal IPython

Figura 3.1 - Janela do terminal IPython.

Outras duas ferramentas bem conhecidas desse ecossistema, o Jupyter Notebook [75] e o Jupyter Lab [43], são aplicações web que permitem a criação, no navegador, de documentos que podem misturar elementos de código e textos descritivos formatados em Markdown, além de textos em HTML ou LaTeX. Esses documentos, chamados de Notebook [76], são documentos texto, no formato JSON e adotam a extensão .ipynb. A Figura 3.2 apresenta um exemplo de notebook criado através do aplicativo JupyterLab.

Exemplo de um Notebook

Figura 3.2 - Exemplo de um Notebook.

As três aplicações mencionadas anteriormente - o terminal do IPython, o Jupyter Notebook e o Jupyter Lab, são consideradas front-ends do Kernel IPython. O kernel é um processo separado responsável por executar de fato o código provido pelo usuário nessas aplicações. Essa arquitetura, mostrada na Figura 3.3, permite que os ambientes clientes possam ser usados com diferentes tipos de kernel, como o IRkernel para R ou o IJulia para a linguagem Julia, bem como ter diferentes clientes para um mesmo kernel.

Arquitetura das aplicações Jupyter

Figura 3.3 - Arquitetura das aplicações Jupyter.

Uma vez que você tenha o IPython instalado no seu ambiente Python, para inicializar o terminal IPython, abra o shell de comandos do seu sistema operacional (ou no prompt da Anaconda no Windows) e digite o seguinte comando:

ipython

Uma sessão como a mostrada na Figura 3.4 será apresentada.

Abrindo o terminal IPython

Figura 3.4 - Abrindo o terminal IPython.

Se você tiver o Jupter Notebook instalado no seu ambiente Python, é possível inicializá-lo a partir do shell de comandos do seu sistema operacional (ou no prompt da Anaconda no Windows) através do seguinte comando:

jupyter notebook

A janela do seu navegador irá apresentar uma aplicação como a mostrada na Figura 3.5.

Inicializando o Jupyter Notebook

Figura 3.5 - Inicializando o Jupyter Notebook.

Nota

É possível indicar qual a pasta que o seu ambiente Jupyter Notebook deva acessar. Para isso, use o argumento --notebook-dir como indicado abaixo:

jupyter notebook --notebook-dir=/home/gribeiro

Se você tiver o JupyterLab instalado no seu ambiente Python, é possível inicializá-lo a partir do shell de comandos do seu sistema operacional (ou no prompt da Anaconda no Windows) através do seguinte comando:

jupyter lab

A janela do seu navegador irá apresentar uma aplicação como a mostrada na Figura 3.6.

Inicializando o JupyterLab

Figura 3.6 - Inicializando o JupyterLab.

Nota

É possível indicar qual a pasta que o seu ambiente JupyterLab deva acessar. Para isso, use o argumento --notebook-dir como indicado abaixo:

jupyter lab --notebook-dir=/home/gribeiro

Nota Histórica

O IPython foi inicialmente criado por Fernando Pérez [60], como uma forma de suprir a necessidade dos cientistas de realizarem rapidamente a exploração de algoritmos, análise e visualização de dados, atividades importantes na rotina diária do trabalho científico. Atualmente, esse projeto é abrigado por uma iniciativa maior, o projeto Jupyter.