Como usar e criar ambientes virtuais com Virtualenv no Linux
Neste artigo vou explicar a necessidade de utilizar ambientes virtuais, como usar e criar, com Virtualenv no Linux
Existem outras boas ferramentas para criar ambientes virtuais, mas sem dúvida Virtualenv é um dos mais queridos e usados.
Ambientes Virtuais, porquê?
Vamos imaginar que temos instalado no sistema operativo a versão do Python 3.7.9, e vamos começar a desenvolver um sistema com Kivy, instalamos a biblioteca Kivy e tudo bem, vai funcionar sem problemas, depois precisamos instalar OpenCV, e tudo continua funcionando bem, entretanto começamos a desenvolver um sistema web, e instalamos Django e todas as bibliotecas necessárias.
Reparem que já começa a ficar tudo um pouco confuso, tudo instalado na mesma pasta junto da instalação principal do Python.
Mas agora podemos ter instalado uma biblioteca para usar com o Django que não vai funcionar por incompatibilidade com outra biblioteca instalada anteriormente para ser usada no nosso projeto Kivy.
E agora? Desinstalamos uma e deixamos a outra?
Vamos imaginar outra situação, temos instalado Django 3 e precisamos mexer em um projeto antigo desenvolvido com Django 2 com algumas bibliotecas que só funcionam com uma versão Django 2 e não funcionam com Django 3.
Entendem agora como o ideal é sempre ter uma instalação Python para cada projeto que vamos desenvolver?
A melhor solução é criarmos um ambiente virtual para cada projeto, ou pelo menos criar um ambiente virtual, para projetos parecidos ou com as mesma necessidade a nível de versões e bibliotecas.
Outra situação em que existe necessidade de utilizar ambientes virtuais, é quando queremos experimentar se as nossas aplicações funcionam com diferentes versões das mesmas bibliotecas.
A principal razão, manter as instalações do Python no sistema, originais, limpas e sempre prontas para que ambientes virtuais sejam criados sem problemas.
É importante não confundir, versões diferentes do Python no Linux com ambientes virtuais diferentes.
Na prática cada ambiente virtual vai “criar uma cópia” de uma versão do Python que escolhermos, versão que já tenha sido instalada anteriormente no sistema.
Neste artigo explico, Como instalar várias versões Python no Linux.
Podemos ter várias versões do Python diferentes instaladas e podemos ter vários ambientes virtuais com a mesma versão do Python, mas em cada ambiente, diferentes bibliotecas.
Considerações Iniciais
O meu sistema operativo é o Mint 20, mas este tutorial serve também para Ubuntu, Debian e muitas outras distribuições Linux.
Neste artigo explico Como instalar várias versões Python no Linux, de maneira correta e simples.
No meu Mint 20 já tenho instalado como instalações principais o Python 2.7.18 e 3.8.5 e posteriormente instalei o Python 3.7.9, 3.8.2 e o 3.9.0.
Instalação Virtualenv
A instalação do Virtualenv deve ser a única instalação que fazemos nas versões principais do Python instaladas.
Mas antes devemos sempre atualizar o ‘pip’ e o ‘setuptools’
python3.7 -m pip install --upgrade pip setuptools
Em cada versão do Python vamos instalar o Virtualenv (para exemplo vou instalar na versão Python3.7.9).
python3.7 -m pip install virtualenv
Onde guardar os ambientes virtuais? Nomes e quantidade
Vamos pensar juntos, se tivermos vários projetos que utilizam a mesma versão do Python, e as mesmas bibliotecas, basta criar um ambiente virtual para esses projetos.
Bibliotecas diferentes já precisamos de ambientes diferentes.
Mas resumindo, os ambientes virtuais podem ser guardados onde quiserem e terem o nome que quiserem.
Eu por exemplo, tenho uma pasta chamada devenvs onde guardo alguns.
Para projetos maiores e em especial com Django eu guardo o ambiente virtual dentro da própria pasta do projeto.
Vamos então criar dentro da nossa pasta pessoal, uma pasta chamada ‘devenvs’ (pode ser qualquer nome e pode estar em qualquer lugar), onde vamos guardar nossos ambientes virtuais.
Para isso podemos usar o comando
mkdir devenvs
Criar um ambiente virtual com uma versão especifica do Python
Entramos dentro da pasta que criamos anteriormente, com o comando.
cd devenvs
Agora temos 2 opções, ou criamos uma nova pasta com o nome que escolhermos para o ambiente virtual e depois dentro da pasta criamos o ambiente, ou vamos criar diretamente a pasta e o ambiente ao mesmo tempo.
Não sei explicar porquê, mas eu costumo criar primeiro a pasta escolhendo já o nome do ambiente virtual e depois sim, criar o ambiente virtual.
Mas vou explicar as duas maneiras de fazer isso.
Então dentro da pasta onde vamos guardar os ambientes virtuais, vamos criar outra pasta chamada ‘venv01’ (pode ser qualquer nome).
mkdir venv01
Entramos dentro da pasta nova.
cd venv01
E agora criamos o ambiente virtual com o comando.
Atenção, a versão do Python deve já estar instalada no sistema, como explico neste artigo, Como instalar várias versões Python no Linux
python3.7 -m virtualenv .
Atenção, precisamos digitar ‘ virtualenv ‘, um ‘ espaço ‘ e um ponto ‘ . ‘
O ponto é necessário por que já criamos anteriormente a pasta do ambiente virtual.
Já temos um ambiente virtual, com a versão Python 3.7.9.
Agora chegou a hora de aprender a usar o ambiente virtual.
Como usar o Virtualenv
Antes de usar o ambiente virtual, por exemplo para instalar as bibliotecas necessárias, é necessário ativa-lo.
No terminal dentro do ambiente virtual, no nosso caso chama-se ‘venv01’, precisamos usar o comando ‘source’ e indicar o caminho até ao arquivo ‘activate’, que está dentro da pasta ‘bin’.
source bin/activate
Este é o comando para ativar o ambiente virtual.
Reparem que agora entre parentes, temos o nome do ambiente virtual confirmando que está ativado.
Explicando de uma maneira simples, foi criado temporariamente nas variáveis de ambiente, um caminho (path) indicando ao Linux que a versão principal do Python neste momento, é a versão que está no ambiente virtual ativado.
Agora os comandos ‘pip’, por exemplo para instalarmos bibliotecas necessárias, vão instalar essas bibliotecas dentro do ambiente virtual.
Se arrancarmos pelo terminal agora, um arquivo .py, o interpretador Python vai ser o do ambiente virtual.
Se utilizarmos um IDE e indicarmos como interpretador o ambiente virtual, a situação vai ser a mesma.
Com Visual Studio Code ou PyCharm por exemplo, ao abrirmos um projeto e indicarmos o ambiente virtual o próprio IDE ativa o ambiente virtual
Para desativar, basta digitar.
deactivate
Qual Python?
Vamos digitar alguns comandos para que possam olhar o que vai acontecer e assim entenderem mais facilmente como usar um ambiente virtual.
Podemos continuar no terminal, dentro da pasta do novo ambiente virtual, e digitamos o comando.
which python3.7
Reparem que o ambiente virtual não está ativado e por isso, Python é o 3.7.9, mas a versão principal instalada no Linux, não o Python do ambiente virtual.
Agora ativamos o ambiente virtual.
source bin/activate
Agora que já ativamos o ambiente virtual, digitamos novamente.
which python3.7
Neste momento estamos a usar o Python 3.7.9 do ambiente virtual.
Lembrem que para desativar basta digitar
deactivate
Criar uma pasta primeiro ou fazer tudo ao mesmo tempo?
Como aprendemos anteriormente, podemos criar uma pasta com o nome do ambiente virtual que vamos criar e depois criar o ambiente com o comando.
virtualenv .
Para criarmos a pasta e o ambiente ao mesmo tempo, em vez do ponto colocamos o nome do ambiente virtual e se necessário os atributos depois.
No exemplo da foto, estou a criar um ambiente virtual chamado teste_01 e escolhendo como versão do Python o 3.9.1
Considerações finais e resumo
Creio que agora já entenderam a necessidade de sempre desenvolvermos nossos projetos utilizando ambientes virtuais, acredito também que já todos conseguem criar e utilizar sem problemas Virtualenv.
Agora é possível instalar e desinstalar com segurança, novas bibliotecas e experimentarmos o que quisermos.
Para apagar um ambiente virtual basta apagar a pasta.
Como boa prática a primeira coisa que faço sempre, depois de criar um ambiente virtual, é atualizar o ‘pip’ e o ‘setuptools’
E nunca esqueçam de ativar o ambiente para ser usado.
No caso de mudarem as pastas de lugar lembrem também que é necessário informar os IDEs que estão a usar
Como usar e criar Virtualenv no Linux
Para finalizar, agradeço por você ter chegado até aqui, e desejo que este post tenha sido útil.