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:
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
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:
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:
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:
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/