Curso

Para desenvolvedores, ter a máquina configurada do jeito certo facilita muito a vida. Isso inclui instalar e ajustar as melhores ferramentas e preparar tudo que ajuda você a dar o seu melhor na hora de criar software. Cientistas de dados não fogem à regra: um setup bem feito é crucial para construir desde ferramentas de visualização até processos de ingestão de dados. Neste tutorial, vamos ver o básico de como preparar um computador para Data Science, mas este guia também é útil para qualquer pessoa interessada em desenvolver software com a linguagem Python. Vamos lá!
Escopo
Python está disponível para uma grande variedade de sistemas operacionais. Este tutorial mostra trechos executados no Linux Ubuntu, mas eles se aplicam amplamente a outros sistemas baseados em UNIX e ao macOS. Para Windows, há pequenas diferenças que serão mencionadas quando necessário.
Python: a peça central
resumo: use a implementação Python3 do site oficial
Pensar no interpretador Python como a peça central para desenvolver aplicações nessa linguagem é algo natural. Mas, ao chegar aqui, você pode ficar em dúvida sobre qual interpretador Python usar. Além disso, você talvez tenha lido sobre duas versões diferentes da linguagem — escolher a versão e o interpretador corretos é a primeira decisão importante.
Python, Anaconda, Jython, WinPython, IronPython... cobras demais para uma gaiola só
Devido à popularidade da linguagem, existem várias implementações do interpretador. Algumas estão prontas para instalar no seu computador; outras ainda estão em fases iniciais e a instalação só é recomendada para seus desenvolvedores ou programadores mais aventureiros. A wiki oficial do Python lista alguns interpretadores disponíveis, destacando seus recursos específicos em comparação a outras implementações. Como veremos ao longo deste tutorial, a distribuição de Python disponível no site oficial inclui tudo o que você precisa para começar a desenvolver seus programas em Python sem sentir falta de recursos de outras implementações.
Python2 ou Python3? Qual versão você deve usar?
Embora o Python 3 tenha sido lançado há mais de dez anos, a transição do Python 2 para a versão mais nova não foi trivial. Um dos principais motivos da adoção lenta foram as diferenças de sintaxe, que tornaram muitas bibliotecas existentes indisponíveis para a versão mais recente. Como você vai notar ao desenvolver em Python, a ampla disponibilidade de bibliotecas para todo tipo de finalidade é uma das grandes forças da linguagem. Com o tempo, um conjunto de ferramentas e bibliotecas como 2to3 e six ajudou a reduzir o gap e facilitar a migração. No momento em que este tutorial foi escrito, a imensa maioria das bibliotecas já está disponível para Python 3, então a decisão é direta: use Python 3. Além disso, em 2020 o ciclo de vida do Python 2 chegou ao fim. Teve até gente planejando uma festa de Celebration of Life na PyCon 2020 — sinta-se à vontade para agradecer ao Python 2 pelo que ele fez por você e pelo seu software!
Instalando Python no seu computador
O interpretador Python está disponível para a maioria dos sistemas operacionais, e alguns ainda oferecem pacotes que facilitam a instalação. No Ubuntu, Python2 e Python3 costumam vir instalados por padrão no desktop. Considere ajustar o alias python, que ainda aponta para a versão 2 em vez da 3, ou defina um alias no seu arquivo ~/.bashrc se achar útil. Como mencionado, a expectativa é que, nos próximos anos, haja apenas uma versão do Python instalada. Minha recomendação é instalar a versão mais recente. Se você já tem Python3, verifique se é maior que 3.5. Caso tenha uma versão mais antiga, vale a pena atualizar e aproveitar os recursos mais novos da linguagem.
$ python --version
Python 3.5.2
No Windows, instalar o interpretador Python também é simples. A página oficial de downloads fornece um instalador que configura o interpretador em poucos cliques.
Gerenciando dependências do projeto com pip

Para um desenvolvimento básico, ter o interpretador Python instalado é o suficiente para começar a codar. O pacote do Python vem com o interpretador e algumas facilidades para gerenciar aplicações. Uma dessas ferramentas é o pip, que ajuda a instalar bibliotecas de terceiros armazenadas no PyPI (Python Package Index) ou em outros repositórios públicos ou privados.
Nosso primeiro projeto em Python: Jupyter Notebooks
Pense no nosso primeiro projeto de Data Science: um Jupyter Notebook que vai tratar dados e apresentar visualizações incríveis. A primeira biblioteca necessária para trabalhar com notebooks é a Jupyter. Instalar o Jupyter no seu computador é tão simples quanto:
$ pip install --user jupyter
Note que a opção --user instala a biblioteca apenas para o usuário que executa o comando. A instalação para todo o sistema pode ser feita removendo essa opção, mas pode exigir privilégios de administrador. Além de instalar, o pip permite baixar bibliotecas, consultar a configuração atual, atualizar e desinstalar pacotes quando não forem mais necessários. A tabela a seguir lista alguns comandos úteis para gerenciar as necessidades da sua aplicação:
| Command | Description |
|---|---|
pip install <package> |
Instala um pacote |
pip install --user <package> |
Instala um pacote apenas para o usuário atual |
pip install --upgrade <package> |
Atualiza um pacote |
pip uninstall <package> |
Desinstala um pacote |
pip download <package> |
Baixa um pacote |
pip freeze |
Lista os pacotes instalados |
pip install -r requirements.txt |
Instala os pacotes listados no arquivo requirements.txt |
pip show <package> |
Exibe informações sobre o pacote |
Vamos retomar esses comandos para gerenciar as dependências do projeto. Por ora, guarde que o pip é o gerenciador de dependências da sua aplicação. E o melhor: o pip instala não só as bibliotecas solicitadas, mas também suas dependências — nada de procedimentos de instalação complexos. pip install é o caminho!
Ambientes virtuais: isole as configurações do seu projeto

Imagine que, enquanto trabalha no seu projeto de notebooks, você descobre uma biblioteca novinha em folha com recursos que quer testar antes de incluir na configuração do projeto. Essa biblioteca exige uma versão diferente do Jupyter Notebook. Nesse ponto, você tem as opções a seguir:
- Instalar o novo pacote sem suas dependências. A biblioteca provavelmente terá problemas, a menos que você altere seu código.
- Instalar o novo pacote com dependências. Seu projeto atual será afetado, forçando você a atualizar a configuração e fazer ajustes para tudo funcionar.
Esses cenários podem acontecer quando você trabalha em dois projetos ao mesmo tempo. Pense em situações mais complexas, com vários projetos ou um conjunto de aplicações em Python que dependem de uma biblioteca que você precisa instalar sem mexer no resto. Dor de cabeça na certa. Felizmente, o Python oferece um mecanismo para isolar a configuração de cada projeto. Esse mecanismo são os ambientes virtuais e, embora já existissem no Python 2 junto com outras abordagens, tornaram-se parte da biblioteca padrão a partir da versão 3.6 (recomendamos usar essa ou superior!). Intérpretes anteriores ao 3.6 podem instalar a biblioteca via pip assim:
$ pip install -U venv
Para quem usa Python2 (a menos que prefira atualizar), a biblioteca se chama virtualenv e pode ser instalada da mesma forma.
$ pip install -U virtualenv
No Ubuntu, o virtualenv também pode estar disponível como pacote do sistema e ser instalado via apt-get:
$ sudo apt-get install python3-venv
Criar um novo ambiente virtual é fácil. No terminal, rode o comando abaixo para criar um ambiente dentro do diretório new_venv.
$ python -m venv new_venv
Recomendação: execute o comando acima a partir do diretório do seu workspace. Assim, você tem um diretório autocontido com seu código-fonte e o ambiente virtual onde ficarão as bibliotecas da aplicação. Depois de criado, ative o ambiente executando o script activate em new_venv/bin/activate.
source new_venv/bin/activate
(new_venv) $ ...
No Windows, rode o script activate dentro da pasta Scripts.
new_venv/Scripts/activate
(new_venv) $ ...
Note que, ao ativar o ambiente virtual, o prompt muda e exibe o nome do ambiente entre parênteses. Em resumo, o ambiente virtual contém:
- Um interpretador python: o mesmo usado para criar o ambiente virtual. A menos que você altere o alias python, pode ser necessário usar explicitamente python3 ou até python3.6 se houver mais de um Python3 instalado.
- O gerenciador de pacotes pip. Ele instala tudo dentro de lib/pythonX.Y/site/packages. O interpretador usa esse diretório para resolver dependências.
- Scripts de ativação/desativação. Eles ajudam a carregar o ambiente do projeto e voltar à configuração padrão quando terminar. Com o ambiente ativo, você pode instalar qualquer biblioteca assim:
$ pip install requests
Esse comando instala a biblioteca requests dentro do ambiente virtual, e ela pode ser carregada pelo interpretador localizado na pasta bin do ambiente. Repare que não foram necessários privilégios de administrador. Você pode conferir a instalação com pip show (pip show requests), que traz detalhes do pacote. Por fim, quando terminar o trabalho, desative o ambiente virtual com o comando deactivate.
(new_venv) $ deactivate
$
Simples, poderoso e muito útil. Ambientes virtuais para salvar o dia! :D
DICA: O local onde os pacotes são instalados pode ser verificado pela variável sys.prefix. Experimente executá-la em um ambiente carregado e também na configuração padrão.
>>> import sys
>>> print(sys.prefix)
Estrutura de projeto: fácil demais com Cookiecutter!

Muita gente começou a desenvolver aplicações Python com um script simples (provavelmente o Hello World). Pensando nisso e no que vimos até aqui, chegamos a uma estrutura de workspace como esta:
- Um diretório com o seu workspace, contendo
- Um diretório de ambiente virtual, e
- Um script simples com seu Hello World.
Embora projetos Python não exijam uma estrutura específica, é recomendável organizar seu código junto com a suíte de testes e outros scripts ou arquivos de configuração que apoiem todo o ciclo de desenvolvimento. Numa abordagem bem direta, um workspace Python poderia ser assim:
$ tree -L 1
.
├── requirements.txt ---> Arquivo de dependências do projeto
├── src ---> Código-fonte
├── tests ---> Código de testes
└── venv ---> Arquivos do ambiente virtual
Falamos do arquivo requirements.txt na seção de pip. Ele guarda as dependências do projeto, que podem ser salvas com o comando pip freeze. As pastas src e tests guardam a lógica de negócio e os testes. Já a pasta venv (nome comum) armazena a configuração do ambiente virtual.
Criando a estrutura do projeto do jeito fácil: Cookiecutter
Embora a abordagem anterior possa ser suficiente, conforme suas habilidades evoluem, você pode querer uma estrutura mais robusta, com ferramentas que facilitem o desenvolvimento. Criar scaffolds manualmente pode ser cansativo. Uma opção melhor é manter uma cópia de um projeto de referência e adaptar para iniciar um novo. Pode funcionar, mas é propenso a erros e pode gerar inconsistências se você esquecer algum ajuste. Novos projetos podem ser configurados facilmente com a ferramenta cookiecutter. Ela recebe um template de projeto e cria uma cópia substituindo nomes de arquivos e conteúdos com parâmetros informados pelo usuário. A ferramenta é implementada em Python e pode ser instalada via pip.
$ pip install -U cookiecutter
Lembre-se: a opção -U instala a ferramenta no seu espaço de usuário. Você pode pular, mas aí precisará instalar como root (ou via sudo). No Ubuntu, ela também está disponível como pacote via apt-get:
$ sudo apt-get install cookiecutter
No uso mais simples, execute:
$ cookiecutter <TEMPLATE_LOCATION>
Os templates podem estar locais ou em uma URL de GIT. Esta última opção é prática para quem quer manter e evoluir templates de workspace em times e organizações.
Para entender como o cookiecutter funciona, veja um projeto de exemplo. O arquivo central desse e de qualquer projeto cookiecutter é o cookiecutter.json, que contém os valores que o usuário deve informar para criar o workspace. Esse arquivo é em JSON e traz um dicionário de pares chave-valor, onde os valores representam os padrões caso o usuário apenas tecle Enter.
{
"full_name": "Steven Loria",
"email": "sloria1@gmail.com",
"github_username": "sloria",
"project_name": "My Flask App",
"app_name": "myflaskapp",
"project_short_description": "A flasky app.",
"use_pipenv": ["no", "yes"]
}
A partir dos valores informados, o cookiecutter substitui no template os nomes de arquivos e diretórios que usam chaves duplas {{...}}.
Se você quer criar seus próprios arquétipos, é uma ótima ideia começar um projeto cookiecutter e colocar nele tudo o que considera valioso para desenvolver apps. Para quem quer começar já, há muitos projetos cookiecutter prontos para instanciar. Procurando um que atenda às suas necessidades? Busque neste mecanismo de busca de templates cookiecutter! E mais: a ferramenta não se limita a projetos Python — ela é genérica e serve para outros tipos também!
Juntando tudo: um ciclo de vida de desenvolvimento
Depois de apresentar gerenciamento de pacotes, ambientes virtuais e estrutura de projeto, vamos juntar tudo para mostrar como você pode preparar seu computador e trabalhar seguindo este tutorial:
- Use Python3 como interpretador. Melhor ainda se for o Python 3.6 ou superior.
- Crie um novo projeto, onde ficarão seus módulos Python e dependências.
- Crie facilmente um projeto com o cookiecutter usando um template de referência da sua escolha.
- Crie um novo ambiente virtual dentro da pasta da aplicação e ative-o quando for começar a codar.
- Codifique o melhor app da sua vida e use bibliotecas de terceiros se precisar.
- Não esqueça de declarar as dependências em um requirements.txt usando o comando
pip freeze.
- Não esqueça de declarar as dependências em um requirements.txt usando o comando
- [Opcional] Envie seu projeto para um sistema de controle de versão como o Git. Mas não versione o conteúdo do ambiente virtual. Você pode recriá-lo quando precisar, como explicado abaixo.
Com o código e o arquivo de dependências salvos, você pode recriar a estrutura do projeto facilmente assim:
- Copie o código e o arquivo de dependências para uma pasta de trabalho (ou clone o repositório, se usar Git).
- Crie um novo ambiente virtual dentro da pasta da aplicação e ative-o para instalar as dependências.
- Instale as dependências com
pip install -r requirements.txt. - Trabalhe nas melhorias ou correções do projeto. Não esqueça de registrar novas dependências no requirements com
pip freeze.
Mais uma coisa antes de finalizar. Embora não tenhamos mencionado IDEs para programar em Python, fique à vontade para escolher a sua e personalizá-la como preferir.
Boas práticas e bom código em Python!
Se quiser aprender mais sobre Python, faça o curso gratuito da DataCamp: Intro to Python for Data Science.