Neste guia, você descobrirá como começar a utilizar ambientes virtuais em Python, tanto no Windows quanto no Linux.
Ao desenvolver múltiplos projetos no seu ambiente local, é comum encontrar desafios relacionados às dependências. A criação de ambientes virtuais específicos para cada projeto pode otimizar a gestão dessas dependências e dos requisitos de cada um.
Para aproveitar as vantagens dos ambientes virtuais em Python, vamos aprender como criá-los e ativá-los. 👩🏽💻
O que são Ambientes Virtuais?
Ambientes virtuais são espaços isolados e independentes que contêm o código e as dependências necessárias para um projeto.
Mas por que utilizar ambientes virtuais?
Ambientes virtuais permitem que você instale e use diferentes versões das mesmas bibliotecas em projetos distintos. Essa prática garante que não haja conflitos quando dois ou mais projetos utilizam versões diferentes. Vamos detalhar melhor essa questão.
Instalação de Pacotes em Python
A biblioteca padrão do Python oferece diversos módulos úteis para testes unitários, interação com o sistema operacional, manipulação de datas e horários, e muito mais.
Entretanto, ao desenvolver projetos em Python, muitas vezes é necessário instalar outros pacotes, desenvolvidos pela comunidade Python, especialmente em aplicações como web scraping, aprendizado de máquina e aplicações web.
Para instalar e gerenciar esses pacotes, você pode usar o conda ou o pip.
Cada projeto requer um conjunto específico de pacotes. Quando você instala pacotes no seu ambiente de desenvolvimento local, todos os projetos acabam compartilhando os mesmos pacotes instalados globalmente.
Por que isso pode ser um problema?
Em seu ambiente de desenvolvimento, você pode ter diversos pacotes. No entanto, um projeto específico pode exigir apenas alguns deles. Quando todos os projetos compartilham instalações comuns, fica difícil identificar quais pacotes foram instalados para qual projeto, ou seja, as dependências de cada projeto.
Há outra limitação nessa abordagem. Imagine que você tenha um projeto Django 2.2 na sua coleção. Se você iniciar um projeto que usa Django 4 e instalar a versão mais recente do Django no mesmo ambiente de desenvolvimento,
O que acontece com a instalação anterior?
A versão anterior do Django será removida e substituída pela nova versão. Em versões mais recentes, alguns recursos podem ter sido descontinuados, fazendo com que projetos Django anteriores não funcionem como esperado.
Em resumo, gerenciar dependências se torna um desafio quando todos os pacotes estão instalados em um ambiente comum, pois cada projeto requer seu próprio conjunto de bibliotecas.
Como Funcionam os Ambientes Virtuais
Vimos os problemas de instalar pacotes em um ambiente de desenvolvimento global. Isso nos leva a entender como os ambientes virtuais solucionam essa questão.
Ao criar e ativar um ambiente virtual para seus projetos Python, você pode instalar apenas os pacotes necessários para cada um.
Retomando o exemplo dos projetos Django, com ambientes virtuais, você pode ter projetos Django 2.2 e Django 4 funcionando sem conflitos, pois as instalações do Django não são mais em todo o sistema, mas estão limitadas aos ambientes virtuais de cada projeto.
Em essência: ambientes virtuais são espaços isolados que contêm o código e as dependências de um projeto.
Vantagens dos Ambientes Virtuais
Agora que você entendeu o funcionamento dos ambientes virtuais em Python, vamos listar suas vantagens:
- Ambientes virtuais fornecem um ambiente de desenvolvimento isolado para cada projeto, permitindo instalar apenas os pacotes necessários.
- Como os ambientes virtuais são independentes e isolados, projetos diferentes podem usar versões distintas da mesma biblioteca, conforme a necessidade. Além disso, você não precisa se preocupar com permissões de sistema para instalar bibliotecas e configurar o ambiente de desenvolvimento.
- Após instalar os pacotes em um ambiente virtual, você pode registrar as dependências do projeto em um arquivo `requirements.txt`. Isso possibilita que outros desenvolvedores repliquem o ambiente do projeto e instalem os pacotes necessários com um único comando.
Agora que você sabe como os ambientes virtuais funcionam e suas vantagens, vamos explorar algumas ferramentas populares para criar e gerenciar ambientes virtuais em Python.
#1. Virtualenv
Virtualenv é uma ferramenta amplamente usada para criar e gerenciar ambientes virtuais para projetos Python. Uma parte da funcionalidade do virtualenv está disponível no pacote `venv`, mas o `virtualenv` é mais rápido e extensível.
#2. Pipenv
O Pipenv combina a funcionalidade de ambiente virtual do `virtualenv` com o gerenciamento de pacotes do `pip`. Ele usa `Pipfiles` para gerenciar as dependências dentro de um ambiente virtual.
Você pode experimentar o `pipenv` diretamente no navegador neste playground do Pipenv.
#3. Conda
Se você utiliza a distribuição Anaconda do Python para desenvolvimento, você pode usar o conda para gerenciamento de pacotes e criação de ambientes virtuais.
Para mais informações, veja este guia abrangente sobre gerenciamento de ambientes com conda.
#4. Poetry
Poetry é uma ferramenta de gerenciamento de pacotes que permite gerenciar as dependências de todos os seus projetos Python. Para começar a usar o Poetry, você precisa ter o Python 3.7 ou uma versão posterior instalada.
#5. Venv
Como mencionado, `venv` oferece um subconjunto da funcionalidade do `virtualenv`, mas tem a vantagem de vir embutido na biblioteca padrão do Python desde a versão 3.3.
Ele está disponível com a instalação do Python e não requer a instalação de pacotes externos. Usaremos `venv` neste tutorial para criar e trabalhar com ambientes virtuais. ✅
Como Criar um Ambiente Virtual Python no Ubuntu
💬 Para acompanhar o restante deste tutorial, você precisa ter o Python 3 instalado localmente. Certifique-se de estar executando o Python 3.5 ou uma versão posterior.
Esta seção descreve como criar e ativar ambientes virtuais em uma máquina Ubuntu Linux. As mesmas etapas também podem ser usadas em outras distribuições Linux.
Para facilitar o gerenciamento, vamos criar um diretório para o projeto e navegar até ele. Criaremos o ambiente virtual `venv` dentro desse diretório.
$ mkdir my_project $ cd my_project
A sintaxe geral para criar um ambiente virtual para um projeto Python é `python3 -m venv
$ python3 -m venv my_env
Como Ativar e Instalar Pacotes em um Ambiente Virtual
Após criar o ambiente virtual, você pode ativá-lo e instalar os pacotes necessários. Para ativar o ambiente virtual, execute o seguinte comando:
$ source my_env/bin/activate
Após ativar o ambiente virtual, você pode executar `pip list` para obter a lista de pacotes instalados:
$ pip list
Como ainda não instalamos nenhum pacote, você verá `setuptools` e `pip`, que são instalados por padrão em cada ambiente virtual criado.
A instalação do `pip` dentro do ambiente virtual permite instalar os pacotes necessários para o projeto específico. É isso que garante um ambiente de desenvolvimento independente para cada projeto.
Agora que o ambiente virtual está ativo, você pode instalar pacotes específicos do projeto usando o `pip`. Como exemplo, vamos instalar `requests`, uma das bibliotecas Python mais populares, que oferece recursos para realizar requisições HTTP e interagir com APIs web.
$ pip install requests
Ao instalar a biblioteca `requests`, você verá que ela será instalada junto com todos os pacotes de que depende.
$ pip list
Você pode usar o comando `pip freeze` e redirecionar a saída para um arquivo `requirements.txt`, como mostrado:
$ pip freeze > requirements.txt
Ao verificar o conteúdo do diretório do projeto, você verá que o arquivo `requirements.txt` foi criado.
$ ls # my_env requirements.txt
Você pode desativar o ambiente virtual após terminar de trabalhar no projeto executando o seguinte comando:
$ deactivate
Como Criar um Ambiente Virtual Python no Windows
Geralmente, um ambiente Linux é preferível para desenvolvimento. Se você estiver em uma máquina Windows, considere usar o Windows Subsystem for Linux (WSL) para configurar um ambiente de terminal Ubuntu para desenvolvimento local.
Se você estiver em uma máquina Windows, pode usar o Windows PowerShell ou o prompt de comando e criar ambientes virtuais com o seguinte comando:
> python -m venv <caminho-para-venv>
Como Ativar um Ambiente Virtual
A ativação de ambientes virtuais em uma máquina Windows varia dependendo se você está usando o prompt de comando ou o Windows PowerShell.
Se você estiver no prompt de comando, execute o seguinte comando para ativar o ambiente virtual:
> <caminho-para-venv>\Scripts\activate.bat
Alternativamente, se você estiver usando o Windows PowerShell, execute este comando para ativar o ambiente virtual:
> <caminho-para-venv>\Scripts\Activate.ps1
Você pode instalar todos os pacotes necessários dentro do ambiente virtual.
Para desativar ambientes virtuais, você pode executar o comando `deactivate`, tanto no prompt de comando quanto no Windows PowerShell.
Conclusão
Neste artigo, discutimos as limitações das instalações em todo o sistema e como elas dificultam o gerenciamento de dependências em projetos Python. Ambientes virtuais em Python oferecem uma maneira de gerenciar melhor as dependências, ao mesmo tempo que fornecem um ambiente de desenvolvimento isolado para projetos individuais.
Entre as ferramentas amplamente usadas para criar e gerenciar ambientes virtuais em Python, você aprendeu a usar `venv`, que está integrado à biblioteca padrão do Python, para criar e ativar ambientes virtuais.
Dentro do ambiente virtual dedicado de um projeto, você pode instalar versões de bibliotecas específicas do projeto. Esses requisitos podem ser registrados em um arquivo `requirements.txt`, facilitando a replicação do ambiente do projeto por outros desenvolvedores.
Ao iniciar seu próximo projeto Python, utilize ambientes virtuais para um melhor gerenciamento de dependências. Boa codificação!🎉