
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:
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.
Ajudou bastante mano, valeu!
Show Luan!!! Qualquer coisa estou a disposição! 😉