in Django, Python

Ambientes virtuais com Python

Ambientes virtuais com Python

Ambientes virtuais com Python

Imagine o cenário: você trabalha em um projeto que usa a versão do Django 1.10, mas precisa iniciar um novo projeto, também com Django, porém, atualmente o Django está na versão 2.1, o que fazer? Desinstalar a versão 1.10 do Django e instalar a mais recente, que nesse momento está na 2.1.x, perfeito, resolvido!!!!

Mas como nem tudo são flores, o projeto em produção que usa a versão do Django 1.10, acaba de apresentar um bug e você, obviamente precisa corrigir, no entanto, você está trabalhando com a versão 2.1, lembra? Putz! Você pensa!!! Vou ter que desinstalar a versão 2.1 e voltar para a 1.10, após resolvido o bug, você instala novamente a 2.1 e volta a se concentrar no novo projeto. Agora imagine que, o projeto com a versão 1.10 tão cedo não será migrado, por vários motivos que não vem ao caso, mas você acaba de perceber que ficará nesse lance de instala e desinstala versões a vida toda, quem sabe…

Bingo! Se você pensou que para a solução dos seus problemas são os ambientes virtuais, com eles é possível você ter a mesma lib, framework ou que seja em versões diferentes, assim, para cada projeto seu que for usar o Django, você cria um novo ambiente virtual e dentro dele é que você instala o Django e todas as suas dependências, com este recurso, você não vai precisar em momento nenhum desinstalar alguma lib, não pelo motivo do cenário acima.

Python disponibiliza várias ferramentas para você criar e gerenciar ambientes virtuais, vou citar as que conheço aqui, mas vamos focar somente em uma, mas a ideia é exatamente a mesma, claro que todas tem o seu fluxo de trabalho, pros e contras, mas a que uso atualmente é simplesmente excepcional.

Começando pela que está inclusa nas “baterias’ do Python, a venv, esta vem “embutida” com o Python, ou seja, não é preciso instalar nada, basta usar.

A próxima é a virtualenv, esta você precisa instalar, é uma lib Python disponibilizada pela comunidade, me serviu por muito tempo! 😉

Na sequência, temos a virtualenvwrapper, como o nome sugere, é um incremento a virtualenv, obviamente você precisa instalar ela também. Após a instalação desta, você vai precisar fazer uma pequena configuração para que tudo funcione da melhor maneira possível.

E por último, mas não menos importante e caçula entre todas as outras citadas anteriormente, temos a Pipenv, essa ferramenta é simplesmente sensacional, não se preocupe que já já você vai entender o porque falo isso.

Sim, antes de prosseguirmos, vamos entender como funciona um ambiente virtual no Python, apesar de já ter dito ali em cima, mas complementando, é simplesmente criado um diretório com links simbólicos para a versão do Python usada na criação do ambiente do sistema operacional. Agora o que você precisa é simplesmente ligar e desligar esse ambiente virtual, ativar ou desativar, estando ativo, todas as libs instaladas serão automaticamente gerencias pelo Python disponível dentro desse ambiente virtual.

Com exceção da Pipenv, você sempre precisa estar com o ambiente ativado quando estiver trabalhando e claro, quando terminar seu trabalho, desativar.

O primeiro motivo pelo qual digo que a Pipenv é sensacional é este, ela permite você gerenciar tudo sem estar com o ambiente ativo, claro que você tem essa possibilidade, de ativar ou desativar, mas enfim, prefiro não ter que me preocupar com isso.

O outro motivo pelo qual considero a Pipenv sensacional é que, utilizando as outras ferramentas, você vai precisar de um arquivo chamado por convenção de requirements.txt, neste arquivo conterá todas as libs que você precisou instalar no seu projeto, isso permite a portabilidade do seu projeto entre a equipe e entre os ambientes de desenvolvimento e produção, ou seja, você sempre terá à mão, todas as dependências usadas no projeto, assim não precisará ficar se lembrando quais foram essas dependências, claro, você pode criar esse arquivo e adicionar ao mesmo tempo as dependências com um único comando, neste caso com o pip freeze > requirements.txt, mas com a Pipenv, você não precisa disso, pois quando você instala uma dependência, automaticamente ela é adicionada em um arquivo chamado de Pipfile, resumo da ópera, instale uma dependência e ela já será automaticamente adicionada no arquivo como requerida, você não precisa se lembrar de a cada nova dependência instalada, adicionar no arquivo, como é feita nas outras ferramentas.

Bom, acho que já dei motivo demais, vamos a um tutor sobre a Pipenv.

Obviamente que você precisa ter ela instalada, no Python você pode instala esta e qualquer outra dependência com o PIP, um gerenciador de pacotes do Python, algo com o apt-get do Linux por exemplo, ou o npm do NodeJS.

pip install pipenv

Pronto, isso é o suficiente para a instalação da lib, o próximo passo é a criação e gerência do ambiente.

Para a criação do ambiente com a Pipenv, você primeiro vai precisar criar um diretório, esse diretório será usado para nomear o ambiente virtual e também vai servir de casa para teu projeto Django ou outro framework que estiver usando.

mkdir myproject && cd myproject

Com a Pipenv você tem praticamente duas formas de criar o teu ambiente virtual, a primeira seria simplesmente instalando uma lib qualquer que você fosse usar no projeto, como o Django por exemplo.

pipenv install django

ou

pipenv --three

No primeiro comando ele cria o ambiente virtual e logo em seguida instala o Django na sua versão mais recente automaticamente. No segundo comando, é criado um ambiente virtual com a versão 3.x do Python, você pode passar o parâmetro --two se quiser com a versão 2.x do Python, é possível ainda especificar uma versão, como em:

pipenv --python 3.5

Com a Pipenv é possível também ativar e desativar seu ambiente virtual, se assim você desejar, é claro.

Com o comando abaixo você ativa o ambiente…

pipenv shell

Para desativar…

exit

Para rodar qualquer script Python que esteja dentro do ambiente virtual que não esteja ativado, você sempre vai precisar prefixar o script, como no exemplo abaixo.

pipenv run ./manage.py runserver

O comando manage.py é do Django e na linha acima ele está levantando um servidor HTTP para o ambiente de desenvolvimento, mas é assim que você vai fazer sempre que precisar executar algum script dentro do ambiente virtual, isso claro, se você não estive ou não quiser trabalhar com o ambiente virtual ativo, eu particularmente trabalho como no exemplo acima, sempre prefixando com o pipenv run.

Bom, acho que isso é o bastante, claro que não tive em hipótese nenhuma a intenção de esgotar o assunto, tem muita coisa ainda que a lib permite fazer, abaixo será listado os sites de cada uma das ferramentas e se você tiver interesse em aprender um pouco mais sobre Pipenv e as outras ferramentas e sobre o Django, dar uma olhada no meu curso Django 2.0 Intermediário – Aprenda TDD, CBV, Pipenv e mais disponibilizado na plataforma Udemy.

Referências:

Python Venv

Python Virtualenv

Python Virtualenvwrapper

Python Pipenv

Fui e até a próxima!!! Participe da discussão, comente, envie dúvidas, sugestões, críticas, correções enfim, participe!

Um forte abraço a todos.

Deixe seu comentário

Comment