Ambientes Virtuais Python

PythonBeginner
Pratique Agora

Introdução

Bem-vindo a este laboratório sobre Ambientes Virtuais Python. O uso de um ambiente virtual serve para testar códigos Python em ambientes encapsulados e evitar sobrecarregar a instalação base do Python com bibliotecas que podem ser usadas apenas para um único projeto. Essa prática é crucial para manter configurações de desenvolvimento limpas, reprodutíveis e livres de conflitos.

Neste laboratório, você terá experiência prática com cinco ferramentas populares para gerenciar ambientes virtuais e dependências em Python:

  • virtualenv: A ferramenta fundamental para criar ambientes Python isolados.
  • Poetry: Uma ferramenta tudo-em-um para gerenciamento de dependências, empacotamento e publicação.
  • Pipenv: Uma ferramenta que visa trazer o melhor de todos os mundos de empacotamento para o Python.
  • Anaconda: Uma plataforma popular para ciência de dados que inclui recursos poderosos de gerenciamento de ambientes.
  • UV: Um instalador e resolvedor de pacotes Python de última geração, extremamente rápido.

Ao final deste laboratório, você será capaz de escolher e usar a ferramenta certa para as necessidades do seu projeto.

virtualenv

Nesta etapa, você aprenderá a usar o virtualenv para criar e gerenciar ambientes Python isolados. O virtualenv é uma ferramenta para criar ambientes Python isolados, permitindo que você teste códigos Python em ambientes encapsulados e evite preencher a instalação base do Python com bibliotecas que podem ser usadas apenas para um único projeto. A ferramenta já foi pré-instalada para você.

Primeiro, vamos criar um diretório para armazenar seus ambientes virtuais e, em seguida, criar um novo ambiente virtual chamado HelloWorld. Abra um terminal no WebIDE e execute os seguintes comandos:

mkdir -p ~/.virtualenvs
virtualenv ~/.virtualenvs/HelloWorld

Você verá algumas saídas à medida que o ambiente é criado. O ambiente virtual será criado no diretório ~/.virtualenvs/HelloWorld.

created virtual environment CPython3.10.12.final.0-64 in 257ms
  creator CPython3Posix(dest=/home/labex/.virtualenvs/HelloWorld, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/labex/.local/share/virtualenv)
    added seed packages: pip==24.0, setuptools==69.5.1, wheel==0.43.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

Agora, vamos ativar o ambiente virtual. Isso alterará o prompt do seu terminal para incluir (HelloWorld), indicando que o ambiente virtual está ativo. Tudo o que você instalar usando o pip agora será específico para este ambiente e não afetará sua instalação global do Python.

source ~/.virtualenvs/HelloWorld/bin/activate

Após a ativação, seu prompt mudará para mostrar (HelloWorld):

(HelloWorld) labex:project/ $

Para sair do ambiente virtual, basta usar o comando deactivate:

deactivate

Observe como o prefixo (HelloWorld) desaparece do prompt do seu terminal.

Para reativar o ambiente mais tarde, você pode usar o comando source novamente de qualquer lugar:

source ~/.virtualenvs/HelloWorld/bin/activate

Seu prompt mudará de volta e você estará no ambiente HelloWorld novamente, pronto para trabalhar em seu projeto.

Poetry

Nesta etapa, você explorará o Poetry, uma ferramenta moderna para gerenciamento de dependências e empacotamento em Python. Ele permite que você declare as bibliotecas das quais seu projeto depende, e ele as gerenciará (instalará/atualizará) para você. O Poetry já está instalado neste ambiente.

Certifique-se de ter desativado seu ambiente virtual.

deactivate

Primeiro, vamos criar um novo projeto usando o Poetry. Este comando configurará uma estrutura de diretórios padrão para o seu projeto.

poetry new my-poetry-project

Este comando cria um novo diretório chamado my-poetry-project com a seguinte estrutura:

my-poetry-project
├── pyproject.toml
├── README.md
├── my_poetry_project
│   └── __init__.py
└── tests
    ├── __init__.py
    └── test_my_poetry_project.py

O arquivo mais importante aqui é o pyproject.toml, que orquestra seu projeto e suas dependências. Vamos visualizar seu conteúdo inicial.

cat my-poetry-project/pyproject.toml

A saída será semelhante a esta:

[tool.poetry]
name = "my-poetry-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

Agora, navegue para o diretório do seu novo projeto:

cd my-poetry-project

Para adicionar uma nova dependência, use o comando poetry add. O Poetry encontrará automaticamente uma versão adequada e a adicionará ao pyproject.toml. Vamos adicionar a biblioteca pendulum.

poetry add pendulum

Para instalar todas as dependências listadas no pyproject.toml (por exemplo, ao clonar um projeto), você executaria:

poetry install

Finalmente, para remover uma dependência, use o comando poetry remove:

poetry remove pendulum

Isso remove o pacote e atualiza o arquivo pyproject.toml adequadamente.

Pipenv

Nesta etapa, você aprenderá a usar o Pipenv, uma ferramenta que visa trazer o melhor de todos os mundos de empacotamento para o Python. Ele cria e gerencia automaticamente um virtualenv para seus projetos, além de adicionar/remover pacotes do seu Pipfile à medida que você instala/desinstala pacotes.

Primeiro, crie um diretório para seu novo projeto e navegue até ele.

cd ~/project
mkdir my_pipenv_project
cd my_pipenv_project

Agora, vamos instalar um pacote. O Pipenv criará automaticamente um novo ambiente virtual e um Pipfile para rastrear suas dependências. Vamos instalar a biblioteca requests.

pipenv install requests

Após a conclusão do comando, você verá dois novos arquivos em seu diretório: Pipfile e Pipfile.lock. O Pipfile é usado para rastrear quais dependências seu projeto precisa. Vamos inspecionar seu conteúdo:

cat Pipfile

A saída mostrará o pacote requests listado em [packages].

[[source]]
url = "https://pypi.org/simple"
verify_ssl = false
name = "pypi"

[packages]
requests = "*"

[dev-packages]

[requires]
python_version = "3.10"

Para ativar o ambiente virtual associado ao seu projeto, execute:

pipenv shell

O prompt do seu terminal mudará, indicando que você agora está dentro do ambiente isolado do projeto.

Para desinstalar um pacote, você pode executar o comando uninstall dentro do shell ativado:

pipenv uninstall requests

Para sair do shell do ambiente virtual, basta digitar exit:

exit

Anaconda

Nesta etapa, você começará a usar o Anaconda. O Anaconda é uma distribuição de Python e R para computação científica que simplifica o gerenciamento e a implantação de pacotes. Seu gerenciador de pacotes, conda, é excelente para criar e gerenciar ambientes. O comando conda está disponível em seu terminal.

Primeiro, vamos criar um novo ambiente chamado my_conda_env. Também especificaremos a versão do Python a ser usada. O sinalizador -y confirma automaticamente quaisquer prompts.

cd ~/project
conda create -n my_conda_env python=3.10 -y

Assim que o ambiente for criado, você precisará ativá-lo para começar a usá-lo.

conda activate my_conda_env

O prompt do seu terminal agora terá o prefixo (my_conda_env), indicando que o ambiente está ativo. Quaisquer pacotes que você instalar agora serão específicos para este ambiente. Vamos instalar o numpy como exemplo.

conda install numpy -y

Quando terminar de trabalhar no ambiente, você pode desativá-lo.

conda deactivate

O prefixo desaparecerá do seu prompt e você retornará ao ambiente base.

UV

Nesta etapa, você descobrirá o UV, um instalador e resolvedor de pacotes Python extremamente rápido da Astral, os criadores do Ruff. Ele foi projetado como um substituto direto para os fluxos de trabalho do pip e pip-tools e pode ser de 10 a 100 vezes mais rápido. O UV já foi pré-instalado para você.

Vamos começar inicializando um novo projeto. O comando uv init criará um arquivo pyproject.toml e um ambiente virtual em um diretório .venv.

cd ~/project
uv init my-uv-project

Agora, entre no diretório do projeto recém-criado.

cd my-uv-project

Para adicionar uma dependência, use o comando uv add. Isso é semelhante ao poetry add ou npm install. Vamos adicionar a biblioteca requests.

uv add requests

O UV detecta e usa automaticamente o ambiente virtual no diretório atual. Você pode executar comandos dentro deste ambiente gerenciado usando uv run. Vamos verificar a versão do Python dentro do ambiente.

uv run python --version

Você deve ver a versão do Python do ambiente virtual, não a global.

Se você preferir ativar o shell manualmente, pode fazê-lo exatamente como faria com um venv padrão:

source .venv/bin/activate

Seu prompt mudará para mostrar (.venv), indicando que o ambiente está ativo. Para sair do shell ativado, use o comando deactivate.

deactivate

O UV simplifica os fluxos de trabalho ao fornecer um binário único e incrivelmente rápido para gerenciamento de pacotes e ambientes.

Resumo

Neste laboratório, você obteve experiência prática com várias ferramentas essenciais para gerenciar ambientes virtuais e dependências Python. Gerenciar adequadamente o ambiente do seu projeto é uma habilidade fundamental para qualquer desenvolvedor Python, garantindo a reprodutibilidade e evitando conflitos.

Você aprendeu a:

  • Usar o virtualenv para criar, ativar e gerenciar ambientes básicos e isolados.
  • Aproveitar o Poetry para um fluxo de trabalho unificado que lida com a criação de projetos, gerenciamento de dependências e empacotamento por meio do arquivo pyproject.toml.
  • Utilizar o Pipenv para gerenciar dependências de aplicativos de forma declarativa com um Pipfile, simplificando o processo de configuração de um ambiente de desenvolvimento.
  • Trabalhar com o Anaconda (conda) para criar e gerenciar ambientes, uma ferramenta especialmente popular na comunidade de ciência de dados por seu tratamento robusto de pacotes complexos.
  • Descobrir o UV, a nova ferramenta extremamente rápida que unifica a instalação de pacotes, resolução e gerenciamento de ambientes em um único binário.

Cada ferramenta tem seus pontos fortes, e a melhor escolha geralmente depende das necessidades específicas do seu projeto e das suas preferências pessoais de fluxo de trabalho. Agora você está equipado para tomar uma decisão informada e gerenciar seus projetos Python com eficácia.