Isolando seus pacotes no Python com virtualenv

0

Para quem está iniciando no mundo da linguagem Python, tem uma palavrinha que aparece com frequência na hora de prepara o ambiente e baixar as primeiras dependências externas,  é a virtualenv. Mas do que se trata afinal e como faço para usar?

Não tem segredo, virtualenv é uma ferramenta para manter as dependências de cada projeto separadas em um lugar diferente para que não ocorram conflitos, inclusive diferentes versões da própria linguagem python com o pyenv. Veja a imagem abaixo:

flow_virtualenv     Isto é feito criando ambientes virtuais que possuem seus pacotes específicos e versão da linguagem, mantendo sua configuração global de site-packages limpa. Você pode ter um projeto que usa o python 2 e outro python 3, e cada um precisa de uma versão diferente do django ou flask.

Vamos imaginar que você vai trabalhar em dois projetos python em paralelo mas cada um vai usar uma versão diferente do Django (framework web). Você criar 2 pastas, projeto1 e projeto2, e para usar o virtualenv devemos instala-lo utilziando o gerenciador de pacotes python, o pip. Estou usando o Visua Studio Code mas pode ser feito direto pelo terminal do windows (cmd):

pip install virtualenv

img1_vscode_virtualenv

Instalação do virtualenv feita com sucesso.

Feito isso, já temos o virtualenv baixado e podemos criar nossos ambientes segregados. Para saber se está ok, execute:

virtualenv –version

Será mostrada a versão do pacote virtualenv que foi instalada. Agora vamos acessar a pasta do primeiro projeto (projeto1) e criar nosso ambiente virtual:

cd projeto1
virtualenv app

Pode usar o nome do ambiente como desejar, chamei o meu de “app” apenas. Veja como ficou:

img2_virtualenv

O interpretador usado será o python34 como mostrado no terminal. Agora que o ambiente virtual foi criado ainda precisamos ativa-lo para de fato começar a trabalhar nele:

.\Scripts\activate.bat

Após executar o activate, vemos que agora é mostrado ao lado esquerdo da linha de comando, entre parênteses, qual o ambiente virtual ativo no momento:

img3_virtualenv

Agora vamos instalar a versão mais atual do framework web Django neste ambiente que criamos, mas antes execute o comando abaixo para listar todos os pacotes existentes neste ambiente (nenhum já que acabamos de cria-lo):

pip freeze

Para instalar a versão mais atual do Django, executamos o comando abaixo:

pip install django

Após a instalação, executamos novamente um pip freeze para listar os pacotes:

img4_virtualenv

Veja que foi instalado o django 1.11.4, versão mais atual no momento que escrevo este post, e o pytz que é uma dependência associada a ele. Até ati tudo bem, mas agora queremos configurar nosso projeto2 seguindo os mesmos passos mostrados mas instalando uma versão específica do Django. Detalhe para fazermos isso precisamos desativar o virtualenv atual, faça:

.\Scripts\deactivate.bat

Resumindo os comando executados para montar nosso ambiente 2:

$ cd projeto2
$ virtualenv app2
$ cd app2
$ .\Scripts\activate.bat
$ (app2) pip freeze
$ (app2) pip install django==1.9.5
$ (app2) pip freeze

 

Com o último comando vemos agora que a lista de pacotes instalados neste virtualenv é: Django==1.9.5. Pode fazer o teste, desativar o app2, retornar para o outro ambiente e executar o pip freeze, a lista de pacotes será: Django==1.11.4 e pytz==2017.2.

Quando devo usar o virtualenv? Sempre! Crie um virtualenv para cada projeto seu. Eles são simples, leves e podem ser recriados facilmente com todas as dependências. Para quem achou meio maçante a forma como os comandos são executados para criar e transitar entre ambientes, o virtualenvwrapper facilita esse lado.

Fonte: http://docs.python-guide.org/en/latest/dev/virtualenvs/

 

Compartilhe.

Sobre o autor

Programador, apaixonado por games, empreendedor. Formado em Ciência da Computação com especialização em desenvolvimento para web, trabalhei com projetos .Net C#, NodeJs e Python nestes 10 anos de experiência no setor privado, em orgão públicos e na minha startup, o EstoqueMestre. http://rodrigoreisf.com.br