Introdução aos ambientes virtuais em Python

Neste artigo, você aprenderá como começar a usar ambientes virtuais em Python, nos sistemas operacionais Windows e Linux.

Quando você começa a trabalhar em vários projetos em seu ambiente de desenvolvimento local, geralmente se depara com problemas de dependência. A criação de ambientes virtuais para cada um de seus projetos pode ajudá-lo a gerenciar melhor as dependências e os requisitos do projeto.

Para aproveitar a vantagem dos ambientes virtuais em Python, vamos aprender a criar e ativar ambientes virtuais. 👩🏽‍💻

O que são ambientes virtuais?

Ambientes virtuais são ambientes isolados e independentes que contêm o código e as dependências de um projeto.

Mas por que você deve usar ambientes virtuais?

Bem, os ambientes virtuais permitem que você instale e use diferentes versões das mesmas bibliotecas para vários projetos. O uso de ambientes virtuais também garante que não haja alterações significativas quando dois ou mais projetos usam versões diferentes. Vamos entender isso com mais detalhes.

Instalando pacotes em Python

A biblioteca padrão do Python vem com vários módulos úteis para teste de unidade, interação com o sistema operacional, trabalho com datas e horas e muito mais.

No entanto, ao trabalhar em projetos Python, muitas vezes você precisará instalar outros pacotes – desenvolvidos pela comunidade Python. Isso é especialmente verdadeiro para aplicativos como web scraping para coleta de dados, aprendizado de máquina e aplicativos da web.

Para instalar e gerenciar esses pacotes, você pode usar conda ou pip.

Cada projeto requer um conjunto específico de pacotes que você precisa instalar. No entanto, quando você instala todos os pacotes em seu ambiente de desenvolvimento em sua máquina local, todos os projetos compartilham os pacotes instalados globalmente.

Então, por que isso é um problema?

Bem, você pode ter N pacotes em seu ambiente de desenvolvimento. No entanto, o projeto em que você está trabalhando atualmente pode exigir apenas 3 deles. Quando todos os seus projetos compartilham instalações comuns, é muito difícil identificar qual dos projetos exigiu qual dos pacotes instalados – as dependências associadas a cada projeto.

Há outra limitação para essa abordagem. Suponha que você tenha um projeto Django 2.2 em sua biblioteca de projetos. Você decide começar a trabalhar em um projeto que usa o Django 4. Então você instala a versão mais recente do Django no mesmo ambiente de desenvolvimento.

O que acontece com a instalação existente?

Ele é removido e substituído pela versão do Django que você instalou. Com versões estáveis ​​mais recentes, alguns recursos podem ter sido preteridos. E seus projetos anteriores do Django podem não funcionar como esperado.

Resumindo nossa discussão até agora: o gerenciamento de dependências se torna difícil quando os pacotes estão todos instalados em um ambiente comum porque os projetos requerem seu próprio conjunto de bibliotecas para serem executados.

Como funcionam os ambientes virtuais

Até agora, vimos os desafios associados à instalação de pacotes em um ambiente de desenvolvimento global (instalações em todo o sistema). Isso nos motiva a entender como os ambientes virtuais lidam com essa limitação.

Ao criar e ativar um ambiente virtual para seus projetos Python, você pode instalar apenas os pacotes necessários para o projeto atual.

Revisitando o exemplo dos projetos Django, com ambientes virtuais, você pode ter projetos Django 2.2 e Django 4 rodando – sem nenhum conflito. Isso ocorre porque as instalações do Django não são mais instalações de todo o sistema, mas estão confinadas aos ambientes virtuais dos respectivos projetos.

Em essência: ambientes virtuais são ambientes isolados que contêm o código e as dependências de um projeto.

Vantagens dos Ambientes Virtuais

Agora que você aprendeu como os ambientes virtuais funcionam em Python, vamos enumerar as vantagens de usá-los:

  • Os ambientes virtuais fornecem um ambiente de desenvolvimento isolado para projetos individuais, permitindo que instalemos apenas os pacotes necessários para o projeto específico.
  • Como os ambientes virtuais dos projetos são independentes e isolados, projetos diferentes podem usar versões diferentes da mesma biblioteca, dependendo dos requisitos. Com ambientes virtuais, você não precisa se preocupar com as permissões do sistema para instalar bibliotecas e configurar o ambiente de desenvolvimento.
  • Depois de instalar os pacotes em um ambiente virtual, você pode capturar as dependências do projeto em um arquivo requirements.txt. Isso permite que outros desenvolvedores repliquem o desenvolvimento e o ambiente do projeto e instalem os pacotes necessários usando um único comando.

Até agora, você aprendeu como os ambientes virtuais funcionam e as vantagens de usá-los. Vamos explorar algumas ferramentas populares que você pode usar para criar e gerenciar ambientes virtuais em Python.

#1. Virtualenv

Virtualenv é uma das ferramentas amplamente utilizadas para criar e gerenciar ambientes virtuais para projetos Python. Um subconjunto da funcionalidade de virtualenv está disponível no pacote venv. No entanto, o pacote virtualenv é mais rápido e extensível em comparação com o venv.

#2. Pipenv

Com o pipnev, você tem a funcionalidade de ambiente virtual do virtualenv e os recursos de gerenciamento de pacotes do pip. Ele usa gerencia pipfiles para gerenciar as dependências do projeto dentro de um ambiente virtual usando.

Você pode experimentar o pipenv diretamente do navegador neste playground do Pipenv.

#3. Conda

Se você usar a distribuição Anaconda do Python para desenvolvimento, poderá usar o conda para gerenciamento de pacotes e para criar ambientes virtuais.

Para saber mais, confira este guia abrangente sobre gerenciamento de ambientes com conda.

#4. Poesia

Poetry é uma ferramenta de gerenciamento de pacotes que permite gerenciar dependências em todos os 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, o venv oferece um subconjunto da funcionalidade do virtualenv, mas vem com a vantagem de ser incorporado à biblioteca padrão do Python, a partir do Python 3.3.

Ele está prontamente disponível com a instalação do Python e não requer instalação de pacotes externos. Vamos usá-lo 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 uma instalação local do Python 3. Certifique-se de estar executando o Python 3.5 ou uma versão posterior.

Esta seção descreve as etapas para 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 de projeto e cd nele; Vamos criar venv dentro deste diretório.

$ mkdir my_project
$ cd my_project

A sintaxe geral para criar um ambiente virtual para seu projeto Python é python3 -m venv . Ao executar este comando, um ambiente virtual chamado my_env será criado no diretório de trabalho atual:

$ python3 -m venv my_env

Como ativar e instalar pacotes dentro de um ambiente virtual

Depois de criar o ambiente virtual, você pode ativá-lo e instalar os pacotes necessários nele. Para ativar o ambiente virtual você pode executar o seguinte comando:

$ source my_env/bin/activate

Depois de ativar um ambiente virtual, você pode executar o comando pip list para obter a lista de pacotes instalados:

$ pip list

Até agora não instalamos nenhum pacote, então você poderá ver setuptools e pip—instalados por padrão—em cada um dos ambientes virtuais criados.

A instalação do pip dentro do ambiente virtual permite instalar os pacotes necessários para o projeto específico; é por isso que você tem um ambiente de desenvolvimento independente para cada projeto.

Agora que você ativou o ambiente virtual, você pode instalar nele pacotes específicos do projeto usando pip. Como exemplo, vamos instalar solicitações Python, um dos pacotes Python mais baixados, que fornece vários recursos úteis para enviar solicitações HTTP para trabalhar com APIs web.

$ pip install requests

Ao instalar a biblioteca de solicitações, você verá que a biblioteca de solicitações é instalada junto com todos os pacotes exigidos por ela.

$ pip list

Você pode usar o comando pip freeze e redirecionar a saída para um arquivo requirements.txt, conforme mostrado:

$ pip freeze > requirements.txt

Se você examinar o conteúdo do diretório do projeto atual, verá que o arquivo requirements.txt foi criado.

$ ls
# my_env requirements.txt

Você pode desativar o ambiente virtual depois de trabalhar no projeto executando o seguinte comando:

$ deactivate

Como criar um ambiente virtual Python no Windows

Em geral, um ambiente Linux é o preferido 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, poderá usar o Windows PowerShell ou o prompt de comando e criar ambientes virtuais usando o seguinte comando:

> python -m venv <path-to-venv>

Como ativar um ambiente virtual

A ativação de ambientes virtuais em uma máquina Windows é diferente dependendo de você estar trabalhando no prompt de comando ou no Windows PowerShell.

Se você estiver no prompt de comando, execute o seguinte comando para ativar o ambiente virtual:

> <path-to-venv>Scriptsactivate.bat

Como alternativa, se você estiver usando o Windows PowerShell, a execução deste comando ativará o ambiente virtual:

> <path-to-venv>ScriptsActivate.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. Os ambientes virtuais em Python fornecem uma maneira de gerenciar melhor as dependências, ao mesmo tempo em 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 como usar venv – que está integrado à biblioteca padrão do Python para criar e ativar ambientes virtuais.

Dentro do ambiente virtual dedicado de um projeto, versões de bibliotecas específicas de um projeto podem ser instaladas. Esses requisitos podem ser capturados em um arquivo requirements.txt, que permite que outros desenvolvedores repliquem o ambiente do projeto facilmente.

Ao iniciar seu próximo projeto Python, certifique-se de usar ambientes virtuais para um melhor gerenciamento de dependências. Boa codificação!🎉