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