1.3 Configuração do Ambiente - Python

Após uma época em que os computadores ocupavam salas enormes e eram compartilhados, o surgimento do computador pessoal trouxe uma característica que normalmente não pensamos muito, e que vai além da sua maior presença nos lares e negócios: a personalização.

Hoje é comum que cada indivíduo tenha seu próprio computador (às vezes mais do que um, se contarmos os smartphones e tablets), e com isso surge a necessidade - e o desejo - de acrescentarmos nosso toque pessoal, seja na escolha das cores e fundo de tela, até a opção por ferramentas e sistemas operacionais. Isso faz muito sentido se considerarmos que passamos cada vez mais horas em frente à tela do computador. Por que não deixar tudo com nosso toque pessoal?

Assim também vai acontecer no desenvolvimento de software. O ambiente de desenvolvimento é o local onde o programador passa a maior parte de seu tempo, realizando atividades de edição de código, documentação, teste, depuração e experimentação. Naturalmente, cada desenvolvedor terá sua própria escolha de sistema operacional, linguagem, configurações de cores, além das ferramentas de sua preferência. Assim, seria impossível ditar um conjunto de regras e escolhas que sirva para todo desenvolvedor. Isso para não mencionar algumas brigas que parecem eternasarrow-up-right (e das quais não queremos tomar partido!)

Devemos portanto nos ater ao mínimo necessário para que as demais atividades deste livro possam ser realizadas sem conflitos ou dificuldades. Como este livro tem seu foco em Machine Learning, vamos configurar um ambiente de desenvolvimento que permita desenvolver sistemas baseados em Machine Learning, um mundo onde Python reina absoluta em termos de popularidadearrow-up-right.

Instalando o interpretador

A maioria dos sistemas operacionais já vem com alguma (ou mais de uma) versão do Python instalada e pronta para usar. Porém, as chances de que essa versão seja antiga, incompatível com alguma biblioteca mais moderna, são grandes. Portanto, é uma boa ideia instalar uma nova versão.

O problema é que manter duas (ou mais) versões de um mesmo interpretador no mesmo ambiente pode gerar conflitos. Há inúmeras formas de se resolver isso, incluindo o uso do Dockerarrow-up-right, mas aqui seguiremos um caminho mais simples: pyenvarrow-up-right.

A instalação é simples. Para Linux e Mac há instruções para isso na página do projetoarrow-up-right. Uma opção que simplifica a instalação é utilizar o pyenv-installerarrow-up-right. Utilizando o pyenv-installer no Linux, todo o ambiente já é configurado, inclusive a instalação do ambiente virtual descrito abaixo.

Para Windows há um porte da ferramenta, chamado pyenv-winarrow-up-right. Há instruções de instalação na página do projetoarrow-up-right. No caso do Windows, para facilitar a execução dos comandos, recomenda-se o uso do PowerShell ou o Git Basharrow-up-right. Verifique sempre as configurações das variáveis de ambiente necessárias para o correto funcionamento dos comandos.

Depois que a instalação tiver sido bem-sucedida, execute o seguinte comando (procure seguir sempre a mesma versão dos exemplos, pois os códigos deste livro estão todos testados nesta versão. Caso queira mudar, faça-o por sua própria conta e risco :-)

pyenv update
pyenv install 3.10.2

Se tudo der certo, ao término da instalação será possível verificar quais interpretadores estão instalados em sua máquina. Execute o seguinte comando:

pyenv versions

O resultado deve ser algo parecido com o seguinte:

* system (set by /Users/fulano/...)
  3.10.2
  3.8.0
  3.7.2

Neste caso, existem quatro versões listadas, a do sistema (marcada com asterisco como sendo a vigente), e outras três.

Vamos trocar para que o sistema comece a utilizar a versão mais recente. Execute o comando:

Teste, executando:

O resultado deve ser Python 3.10.2, indicando que a versão instalada é a que está sendo reconhecida pelo sistema operacional.

É possível utilizar essa ferramenta para manter múltiplas versões do Python instaladas, adicionar novas, remover, entre outras tarefas. Consulte a página do projeto para mais detalhes sobre como fazer tudo isso. Para este livro, já temos o necessário para seguir adiante.

Ambientes virtuais com pyenv e virtualenv

Outra coisa que pode ser bastante útil é criar um ambiente separado para trabalhar. É comum que, em uma mesma máquina, você precise trabalhar em vários projetos Python. Também é comum que cada projeto tenha suas próprias características. Apesar de, em tese, ser possível que todo código Python seja executável pela versão mais recente do interpretador ou das bibliotecas, isso nem sempre é verdade, graças à retrocompatibildadearrow-up-right, um sonho tão distante em muitos cenários.

Mas não iremos entrar no mérito desse assunto, e sim dizer que há um jeito simples de evitar alguns dos problemas das diferentes versões do interpretador/bibliotecas: o uso de ambientes virtuais. Em um resumo simplificado, um ambiente virtual isola versões do interpretador e das bibliotecas. Assim, se um projeto A utiliza uma determinada versão do Python e da biblioteca X, e um projeto B utiliza uma outra versão do Python e da biblioteca X, e essas versões não são compatíveis, basta criar um ambiente virtual distinto para cada uma.

Faremos isso com um plugin do pyenv, chamado pyenv-virtualenvwrapper. Instruções para instalação podem ser encontradas na página do projetoarrow-up-right.

Após a instalação, podemos criar novos ambientes à vontade. Vamos criar um para todos os exemplos deste curso, com o seguinte comando:

Sem entrar em muitos detalhes sobre o comando, podemos identificar duas coisas importantes:

  • 3.10.2 é a versão do Python desse ambiente virtual

  • devopsml é o nome do nosso ambiente virtual

Se o comando for bem-sucedido, deve ter sido criado um novo ambiente. Para verificar, execute:

O ambiente devopsml deve aparecer na lista que for exibida, sendo também possível identificar a versão do python associada.

Agora vamos ativar nosso ambiente virtual recém-criado. Execute o seguinte comando:

Se tudo der certo, o prompt do terminal deve passar a mostrar o nome do ambiente entre parêntesis, mais ou menos assim:

Para sair do ambiente virtual, pasta executar

Em máquinas Windows, até o momento da escrita deste capítulo, não existe uma forma simples de instalar o virtualenvwrapper como plugin do pyenv. Para facilitar, criamos um comando customizado para o Powershellarrow-up-right. Basta instalá-lo em sua máquina e utilizá-lo conforme as instruções que estão no próprio arquivo.

O que esse comando faz é utilizar outro módulo, o venv, que também cria um ambiente virtual. O comando completo é o seguinte:

Normalmente, o nome da pasta é .venv, que ficará dentro do diretório do projeto. Portanto, se quiser construir o ambiente à mão ao invés de usar nosso script, rode o seguinte comando dentro do seu projeto:

Para ativar esse ambiente, é só executar o seguinte:

A partir desse momento, todos os módulos que instalar ficarão restritos a esse ambiente.

Ambientes virtuais com Conda

Outra alternativa bastante utilizada para gerenciamento de versões do Python e criação de ambientes virtuais é o Conda. Diferentemente do pyenv, que foca principalmente na instalação e seleção de versões do interpretador, o Conda também gerencia bibliotecas e dependências externas (inclusive não-Python), sendo muito comum em projetos de Machine Learning e Ciência de Dados.

O Conda pode ser instalado através de duas distribuições principais:

  • Anaconda (mais completa, já vem com diversas bibliotecas pré-instaladas)

  • Miniconda (instalação mínima, recomendada quando queremos mais controle)

Para este livro, recomendamos o uso do Miniconda, por ser mais leve e permitir instalar apenas o que for necessário.

Após instalar o Conda (verifique as instruções na página oficial do projeto), abra um novo terminal e confirme se está tudo funcionando corretamente:

Se o comando retornar a versão instalada, significa que o Conda está pronto para uso.


Criando um ambiente

Para criar um novo ambiente com uma versão específica do Python, utilize o seguinte comando:

Vamos entender os principais elementos:

  • --name devopsml define o nome do ambiente

  • python=3.10.2 define a versão do Python que será instalada nesse ambiente

Durante a execução, o Conda mostrará os pacotes que serão instalados e pedirá confirmação. Digite y para prosseguir.


Listando ambientes

Para visualizar todos os ambientes criados em sua máquina, execute:

ou

O ambiente atualmente ativo aparecerá marcado com um asterisco (*).


Ativando um ambiente

Para ativar o ambiente recém-criado:

Se tudo ocorrer corretamente, o nome do ambiente aparecerá no início do prompt do terminal, algo semelhante a:

A partir desse momento, todos os pacotes instalados com pip ou conda install serão adicionados apenas a esse ambiente.


Desativando um ambiente

Para sair do ambiente virtual, utilize:

O nome do ambiente desaparecerá do prompt, indicando que você voltou ao ambiente base.


Removendo um ambiente (opcional)

Caso seja necessário remover completamente um ambiente criado:

Esse comando apagará o ambiente e todas as bibliotecas instaladas nele.


Observação importante

Assim como mencionado anteriormente, é fundamental verificar se o ambiente correto está ativado antes de iniciar o trabalho em um projeto. Trabalhar no ambiente errado pode gerar conflitos de dependências e versões, algo que queremos evitar especialmente em projetos de Machine Learning, onde bibliotecas costumam ter requisitos bastante específicos.

Com isso, você agora conhece duas abordagens distintas para isolamento de ambientes: uma baseada em pyenv e outra baseada em conda. Escolha aquela que melhor se adapta ao seu fluxo de trabalho e mantenha consistência ao longo do projeto.


Parabéns, se chegou até aqui já tem o que precisa para começar a desenvolver os exemplos do livro.

IMPORTANTE: sempre que for trabalhar em um novo projeto, verifique se o ambiente virtual está ativado, caso contrário você pode estar trabalhando no ambiente real (interpretador e bibliotecas instaladas no sistema), no qual não queremos mexer para evitar conflitos.

Atualizado