Guia: Ambientes Virtuais Python
Aprenda sobre ambientes virtuais Python, os benefícios de usar ambientes virtuais e como trabalhar dentro de ambientes virtuais.
Neste guia, aprenderemos sobre ambientes virtuais Python, os benefícios de usar ambientes virtuais e como trabalhar dentro de ambientes virtuais.
Depois de terminar este tutorial, você entenderá o seguinte:
O que são ambientes virtuais Python e por que precisamos dele?
Como criar, ativar, desativar e excluir ambientes virtuais?
Como instalar pacotes em ambientes virtuais e reproduzi-los em outros sistemas?
Se você precisar instalar o Python, siga as instruções de instalação disponível na página do Python.
Ambientes virtuais Python
Um ambiente virtual no Python serve para gerenciar dependências e isolar projetos. Ele possui seu próprio conjunto de dependências e uma cópia do binário do Python (da mesma versão utilizada para criar o ambiente).
Assim, as bibliotecas instaladas em um ambiente virtual ficam isoladas das bibliotecas instaladas na versão global do Python do sistema e de outros ambientes virtuais. Isso acontece porque a instalação das bibliotecas é feita localmente, no diretório específico do ambiente virtual, e não globalmente no sistema, como ocorreria se as bibliotecas fossem instaladas sem usar um ambiente virtual.
Os ambientes virtuais Python criam contextos isolados para manter separadas as dependências exigidas por diferentes projetos, para que não interfiram em outros projetos ou pacotes de todo o sistema. Basicamente, configurar ambientes virtuais é a melhor maneira de isolar diferentes projetos Python, especialmente se esses projetos tiverem dependências diferentes e conflitantes. Como conselho para novos programadores Python, sempre configure um ambiente virtual separado para cada projeto Python e instale todas as dependências necessárias dentro dele — nunca instale pacotes globalmente.
Como usar ambientes virtuais Python
Até agora, aprendemos o que são ambientes virtuais e por que precisamos deles. Nesta parte do tutorial aprenderemos como criar, ativar e (em geral) trabalhar com ambientes virtuais.
Criando um ambiente virtual Python
Primeiro crie uma pasta de projeto e crie um ambiente virtual dentro dela. Para fazer isso, abra o terminal de comando, escreva os seguintes comandos e pressione Enter.
$ mkdir projeto
$ cd projeto
Agora, use o comando venv para criar um ambiente virtual dentro da pasta do projeto, conforme o comando a seguir:
$ python -m venv env
Obs: Existem duas ferramentas para configurar ambientes virtuais, virtualenv e venv, que podemos usar quase de forma intercambiável. O virtualenv oferece suporte a versões mais antigas do Python e precisa ser instalado usando o comando pip. Por outro lado, venv é usado apenas com Python 3.3 ou superior e está incluído na biblioteca padrão do Python, não exigindo instalação.
Ativando um ambiente virtual Python
Para ativar o ambiente virtual que criamos na etapa anterior, execute o seguinte comando.
No Linux ou MacOs:
$ source env/bin/activate
No Windows:
$ env/Scripts/Activate
Como você viu após ativar o ambiente virtual, seu nome aparece entre parênteses no início do prompt do terminal. Executar o comando which python é outra maneira de garantir que o ambiente virtual esteja ativo. Se executarmos este comando, ele mostra a localização do interpretador Python no ambiente virtual. Vamos verificar a localização dentro do ambiente virtual.
No Linux ou MacOs:
(env) $ which python
/Users/data_poet/projeto/env/bin/python
No Windows:
(env) $ which python
/Users/data_poet/projeto/env/Scripts/python
É bom saber que a versão Python do ambiente virtual é igual à versão Python usada para criar o ambiente. Vamos verificar a versão do Python no ambiente virtual.
(env) $ python --version
Python 3.11.9
Como eu utilizei o Python 3.11 para configurar o ambiente virtual, o ambiente virtual usa exatamente a mesma versão do Python.
Instalando pacotes em um ambiente virtual Python
Agora estamos dentro de um ambiente virtual isolado onde apenas pip e ferramentas de configuração são instaladas por padrão. Vamos verificar os pacotes pré-instalados no ambiente virtual executando o comando pip list.
(env) $ pip list
Package Version
---------- -------
pip 23.2.1
setuptools 65.5.0
Antes de usarmos o pip para instalar qualquer pacote, vamos atualizá-lo para a versão mais recente. Como estamos trabalhando dentro do ambiente virtual, o comando a seguir atualiza apenas a ferramenta pip dentro deste ambiente, não em outros ambientes virtuais ou em todo o sistema.
No Linux e MacOs:
(env) $ python3 -m pip install --upgrade pip
No Windows:
(env) $ python -m pip install --upgrade pip
Execute novamente o comando pip list para ver as alterações.
Agora, vamos instalar o pacote pandas nos ambientes. Antes de instalar o pacote, você precisa decidir qual versão instalar. Se for instalar a versão mais recente, você pode simplesmente usar o seguinte comando:
(env) $ pip install pandas
Mas se quiser instalar uma versão específica do pacote, você precisa usar este comando:
(env) $ pip install pandas==2.2.0
Agora, vamos ver como podemos dizer ao pip que instalaremos qualquer versão do pandas anterior à versão 2.1.
(env) $ pip install 'pandas<2.1'
Além disso, podemos pedir ao pip para instalar o pacote pandas após a versão 1.5.3 da seguinte forma:
(env) $ pip install 'pandas>1.5.3'
Nos comandos anteriores, colocamos a especificação do pacote entre aspas, pois os sinais maior que > e menor que < têm um significado especial no shell da linha de comando. Ambos os comandos instalarão a versão mais recente do pacote pandas que corresponda às restrições fornecidas. Entretanto, a melhor prática é especificar pacotes com um número de versão exato.
Vamos revisar a lista de pacotes instalados no ambiente.
(env) $ pip list
Package Version
--------------- -----------
numpy 1.26.4
pandas 2.2.2
pip 23.2.1
python-dateutil 2.9.0.post0
pytz 2024.1
setuptools 65.5.0
six 1.16.0
tzdata 2024.1
Ao instalar o pandas, o NumPy e quatro outros pacotes são instalados automaticamente como pré-requisitos para o pacote pandas.
Reproduzindo um ambiente virtual Python
Suponha que seu colega vá trabalhar no mesmo projeto em que você trabalha há semanas. Ele precisa instalar exatamente os mesmos pacotes com as versões corretas em um ambiente virtual em seu sistema. Para criar ambientes idênticos, primeiro você precisa listar todas as dependências instaladas no ambiente virtual do projeto usando o comando pip freeze.
(env) $ pip freeze
numpy==1.26.4
pandas==2.2.2
python-dateutil==2.9.0.post0
pytz==2024.1
six==1.16.0
tzdata==2024.1
O output do pip freeze é bastante semelhante ao do pip list, mas retorna a lista de pacotes instalados em um ambiente em um formato correto para reproduzir o ambiente com as versões exatas de pacotes que o projeto requer. A próxima etapa é exportar a lista de pacotes para o arquivo requirements.txt. Para fazer isso, execute este comando:
(env) $ pip freeze > requirements.txt
O comando acima cria um arquivo de texto denominado requisitos.txt na pasta atual. O arquivo requirements.txt contém todos os pacotes e suas versões exatas.
Muito bem, você criou um requirements.txt que pode distribuir ao seu colega para reproduzir o mesmo ambiente virtual no sistema dele. Agora vamos ver o que ele deve fazer para reproduzir o ambiente virtual. É muito simples. Ele primeiro precisa criar um ambiente virtual, ativá-lo e, em seguida, executar o comando pip install -r requirements.txt para instalar todos os pacotes necessários.
Ela executaria os três comandos a seguir:
No Linux ou MacOs:
$ python3 -m venv prj/venv
$ source prj/venv/bin/activate
(venv) $ pip install -r requirements.txt
No Windows:
$ python -m venv prj/venv
$ prj/venv/Scripts/activate
(venv) $ pip install -r requirements.txt
O último comando instala todos os pacotes listados em requirements.txt no ambiente virtual que seu colega está criando. Então, se ele executar o comando pip freeze ao seu lado, ela obterá os mesmos pacotes com as mesmas versões que as suas. Outro ponto pertinente a considerar é que se você for adicionar seu projeto a um repositório Git, nunca adicione sua pasta de ambiente virtual ao repositório. A única coisa que você precisa adicionar é o arquivo requirements.txt.
Obs: Uma pasta de projeto Python contém código-fonte que é executado em um ambiente virtual. Por outro lado, um ambiente virtual é uma pasta que contém o interpretador Python, pacotes e ferramentas como pip. Portanto, a melhor prática é mantê-los separados e nunca colocar os arquivos do seu projeto em uma pasta de ambiente virtual.
Desativando um ambiente virtual Python
Quando terminar de trabalhar com um ambiente virtual ou quiser mudar para outro ambiente virtual, você poderá desativar um ambiente executando este comando:
(env) $ deactivate
Excluindo um ambiente virtual Python
Se quiser excluir um ambiente virtual, você pode simplesmente excluir sua pasta, sem necessidade de desinstalação.
$ rm -rf projeto/env
Resumo
Neste tutorial, aprendemos como os ambientes virtuais Python evitam conflitos entre dependências de diferentes projetos ou em todo o sistema. Além disso, aprendemos como trabalhar em projetos distintos com dependências diferentes, alternando entre esses ambientes independentes.
Referências
Lotfinejad, Mehdi. “A Complete Guide to Python Virtual Environments (2022).” Dataquest, 17 Jan. 2022, www.dataquest.io/blog/a-complete-guide-to-python-virtual-environments/.