Ambientes Virtuais com Python

A utilização de ambientes virtuais para aplicações em Python se tornou bastante utlizada por vários motivos, dentre eles isolar os pacotes da aplicação com os do pacotes do sistema.

Isso ajuda bastante trabalha em vários projetos usando as mesmas bibliotecas mas com versões diferentes, e também com ambientes em que não exista permissão para instalação dos pacotes como superusuário assim com o venv não há preocupação.

Existem algumas vantagens em utilizar o venv no lugar de outras bibliotecas, uma delas é que se trata um pacote do próprio python3, trazendo assim toda as facilidades de uma biblioteca padrão.

Caso tenha interesse em conhecer outras bibliotecas e suas diferenças no link abaixo temos uma explicação bacana sobre cada uma delas em inglês: https://stackoverflow.com/questions/41573587/what-is-the-difference-between-venv-pyvenv-pyenv-virtualenv-virtualenvwrappe

Instalando o pacote venv

Obs: O venv funciona nas versões 2.7, 3.5, 3.6, 3.7.6 e 3.8 do Python.
Neste post iremos usar a 3.x, padrão de vários sistemas operacionais como no Ubuntu e no Manjaro.

Instale o pacote venv com o pip3:

sudo apt install python3-venv

Dentro do seu projeto use o comando python -m venv .venv para criar uma virtual environment:

python -m venv .venv

Pronto instalação finalizada. Agora vamos aprender a usar o venv dentro do nosso projeto:

Adicionando uma venv no seu projeto

Crie a pasta do seu projeto:

mkdir nome_do_projeto

Entre na pasta do projeto:

cd nome_do_projeto

Insira o seguinte comando para criar uma venv dentro do seu projeto:

python -m venv .venv

Precisamos ativar a venv para que use a versão do python e pacotes apenas no seu projeto separando-os do seu sistema operacional:

source .venv/bin/activate

O retorno será semelhante a esse:

(.venv)bergpb@localhost

Para desativar a venv basta usar o seguinte comando:

deactivate

Eu costumo adicionar o comando para ativar uma venv como alias no meu .bashrc desta forma, assim não preciso digitar o comando completo, apenas utilizo o alias activate:

echo "alias activate='source .venv/bin/activate'" >> ~/.bashrc

Pronto agora você pode instalar pacotes sem se preocupar com conflitos em outros projetos.