Jupyter notebooks com Django

Publicado em 2018-05-21 por Vinicius Assef

Eu sou adepto da linha de comando. Talvez porque eu tenha começado a usar computadores antes das interfaces gráficas, mas me sinto muito produtivo na linha de comando. Entretanto é preciso admitir quando a interface gráfica é a melhor opção. Esse é o caso do Jupyter Notebook. Desde que eu o conheci, praticamente não uso mais o shell do Python em modo texto.

Então, o próximo passo é usar o Jupyter Notebook em meus projetos Django. Vamos ver como fazer o Jupyter funcionar com o Django do seu projeto.

A sabedoria de grandes personagens do passado ensina a nos apoiarmos sobre os ombros de gigantes. Deste modo, vamos aprender o pulo do gato desse artigo com The definitive guide to setup my Python workspace, do Henrique Bastos. Leia lá e aprenda a configurar o Jupyter para reconhecer o virtualenv ativo.

A propósito, eu também uso o pyenv em Mac e em Linux.

Depois de configurar o Jupyter conforme o texto indica, tudo fica muito simples. Basta seguir os passos abaixo.

  1. Na linha de comandos, ative o virtualenv do seu projeto normalmente:

     $ cd ~/projects/meu_exemplo
     $ source ./.venv/bin/activate
    
  2. Inicie o jupyter:

     (meu_exemplo) $ jupyter notebook
    
  3. Clique na URL mostrada para entrar na interface web do Jupyter notebook.

  4. Crie um novo notebook e adicione uma célula Python com o seguinte conteúdo:

     import django, os
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meu_exemplo.settings")
     django.setup()
    
  5. Tecle Shift + Enter para executar a célula.

Agora você pode usar esse notebook para interagir com o Django da mesma forma que faria usando a interface modo texto. Você está dentro do seu virtualenv, portanto, usando o Django (e qualquer outra biblioteca) instalado nele. Use seus models, faça queries, teste os forms... enfim, use tudo o que precisar.

O que eu mais gosto no Jupyter notebook é poder copiar e colar trechos em outras células, enquanto estamos fazendo experimentos. Eu o acho especialmente útil durante o aprendizado de algum assunto novo.

Vinicius Assef

Eu sou apaixonado por Python e shell script.

Aprenda com seus erros e dê nome certo às coisas.