uv – Novo Gerenciador de Pacotes, Projetos e Ambientes Python

Pontos positivos sobre o Python uv

Conteúdo da página

Python uv (pronúncia “you-vee”) é um gerenciador de pacotes e projetos Python moderno e de alto desempenho, escrito em Rust. Ele foi projetado como uma substituição direta para as tradicionais ferramentas de gerenciamento de pacotes Python, como pip, pip-tools, virtualenv, pipx e pyenv, com o objetivo de simplificar e acelerar os fluxos de trabalho de desenvolvimento Python.

O uv é desenvolvido pela Astral, a equipe por trás do popular linter Python Ruff, e foi projetado para abordar pontos de dor comuns no ecossistema Python — como instalações lentas, conflitos de dependências e gerenciamento complexo de ambientes — aproveitando o desempenho do Rust e uma arquitetura de software moderna.

uv python ultra-violet spa

Principais Recursos do uv

  • Velocidade Excepcional: o uv é significativamente mais rápido que as ferramentas tradicionais — tipicamente de 8 a 10 vezes mais rápido que o pip sem cache, e até 80 a 115 vezes mais rápido com um cache quente.
  • Ferramenta Tudo-em-Um: Combina instalação de pacotes, resolução de dependências, gerenciamento de ambientes virtuais, gerenciamento de versões do Python, criação de estrutura de projetos e execução de scripts em uma única ferramenta.
  • Compatibilidade: Oferece uma interface de linha de comando compatível com o pip, facilitando a adoção sem uma curva de aprendizado íngreme.
  • Gerenciamento Robusto de Dependências: Fornece resolução precisa de dependências e suporte a lockfiles para ambientes reproduzíveis.
  • Ambientes Virtuais Automáticos: Cria e gerencia ambientes virtuais automaticamente, reduzindo a configuração manual.
  • Suporte Multiplataforma: Funciona em macOS, Linux e Windows.
  • Instalação Independente: Pode ser instalado sem exigir Python ou Rust, usando um instalador simples ou o curl.

uv vs poetry vs pdm vs pip performance comparison

Ainda não tem certeza por que usar o uv?

  • Desempenho: Reduz drasticamente os tempos de instalação de pacotes e resolução de dependências.
  • Simplicidade: Unifica múltiplas ferramentas em uma única, simplificando a configuração e o gerenciamento de projetos.
  • Confiabilidade: Fornece ambientes consistentes e reproduzíveis com mensagens de erro claras e resolução de conflitos.
  • Padrões Modernos: Suporta pyproject.toml para configuração de projetos, alinhando-se aos padrões atuais de empacotamento Python.

Casos de Uso Exemplo

Vamos tentar algo emocionante!

  • Iniciando um Novo Projeto:
uv init myproject
cd myproject
uv add requests
uv run python script.py

Isso cria um diretório de projeto, configura um ambiente virtual, instala dependências e executa scripts em um ambiente isolado.

  • Gerenciando Scripts com Dependências em Linha:
uv add --script script.py requests
uv run script.py

O uv pode gerenciar dependências para scripts de arquivo único sem arquivos de requisitos separados.

Comparação com Ferramentas Tradicionais

Recurso uv pip/virtualenv Poetry
Velocidade Muito rápido Lento Moderado
Ambientes Virtuais Automático Manual Automático
Resolução de Dependências Avançado Básico Avançado
Gerenciamento de Versão Python Sim Não (requer pyenv) Não
Suporte a Lockfile Sim Não (requer pip-tools) Sim
Execução de Scripts Integrado Não Limitado

Como posso instalar e começar a usar o UV no meu sistema

Para instalar e começar a usar o uv no seu sistema, siga estes passos simples:

Instalação

  1. Instalador Independente (Recomendado)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

Ou, se preferir o wget:

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • Versão Específica: Você pode solicitar uma versão específica incluindo-a na URL, por exemplo, https://astral.sh/uv/0.7.15/install.sh.
  1. Alternativa: Instalar via pip (se você tiver Python instalado)
pip install uv

Nota: Este método é menos recomendado para acesso em todo o sistema, a menos que você saiba o que está fazendo, pois pode bagunçar o ambiente Python do seu sistema.

  1. Instalar via pipx (para instalação isolada e de usuário)
pipx install uv

Este método é mais limpo para acesso global se você já usa o pipx.

Primeiros Passos

Para Verificar a Instalação - Execute:

uv

Você deve ver um menu de ajuda confirmando que o uv está instalado e pronto.

Para Criar e Ativar um Ambiente Virtual

  • Criar um venv:
uv venv test
  • Ativar no Linux/macOS:
source test/bin/activate
  • Ativar no Windows:
.\test\Scripts\activate

Agora você pode usar uv pip install para instalar pacotes neste ambiente.

Iniciar um Novo Projeto

uv init

Isso cria um pyproject.toml e um .gitignore para o seu projeto.

Adicionar Dependências

Adicionar um pacote:

uv add

Isso atualiza o pyproject.toml e gera/atualiza o lockfile.

Sincronizar Dependências

Instalar todas as dependências no seu ambiente:

uv sync

Ou, use a interface compatível com pip:

uv pip install

Isso garante que todas as dependências sejam instaladas de acordo com o seu lockfile.

Executar Scripts

Use:

uv run script.py

Isso gerencia automaticamente o ambiente e as dependências para o seu script.

Integração com Shell (Opcional)

Para um fluxo de trabalho mais suave, você pode adicionar a integração do shell ao seu .zshrc ou .bashrc para ativar automaticamente um ambiente virtual padrão e criar um alias de pip para uv pip.

Com estes passos, você terá o uv instalado e estará pronto para gerenciar seus projetos Python com velocidade e facilidade.

Instalando Versões Específicas do Python

Você pode usar o uv para instalar versões específicas do Python e gerenciá-las para seus projetos.

  • Instalar a versão estável mais recente do Python:
    uv python install
    
    Este comando baixa e instala a versão estável mais recente do Python disponível.
  • Instalar uma versão específica:
    uv python install 3.12
    
    Isso instala a versão de correção (patch) mais recente do Python 3.12 (por exemplo, 3.12.3).
  • Instalar uma versão de correção exata:
    uv python install 3.12.3
    
    Isso instala exatamente o Python 3.12.3.
  • Instalar múltiplas versões:
    uv python install 3.9 3.10 3.11
    
    Isso instala o Python 3.9, 3.10 e 3.11.
  • Instalar uma versão que corresponda a uma restrição:
    uv python install '>=3.8,=3.11"
    
    Isso altera o requisito de versão do Python do projeto.

Notas Adicionais

Downloads Automáticos: Por padrão, o uv baixará e instalará automaticamente as versões do Python necessárias se não forem encontradas no seu sistema.

Python do Sistema: o uv pode usar instalações do Python existentes se estiverem presentes, ou você pode forçá-lo a usar o Python do sistema com a flag --no-managed-python.

Atualizações: Você pode atualizar as versões do Python gerenciadas pelo uv para a versão de correção mais recente com:

uv python upgrade 3.12

Ou atualizar todas as versões instaladas:

uv python upgrade

A atualização entre versões menores (por exemplo, de 3.12 para 3.13) não é suportada.

Em resumo, o uv oferece ferramentas flexíveis e poderosas para instalar, gerenciar e usar versões específicas do Python em seus projetos.

Como o UV descobre interpretadores Python disponíveis em diferentes sistemas

O UV descobre interpretadores Python disponíveis em diferentes sistemas verificando um conjunto de locais bem definidos e consultando cada candidato por seus metadados de versão. Veja como funciona:

  • Instalações Python Gerenciadas:
    O UV procura primeiro no diretório especificado pela variável de ambiente UV_PYTHON_INSTALL_DIR, onde armazena suas próprias versões do Python gerenciadas.
  • PATH do Sistema:
    No macOS e Linux, o UV verifica executáveis nomeados python, python3 ou python3.x (onde x é um número de versão) nos diretórios listados no PATH do sistema. No Windows, ele procura por python.exe.
  • Locais Específicos do Windows:
    No Windows, o UV também verifica o registro do Windows e os interpretadores Python da Microsoft Store usando a saída de py --list-paths.
  • Ambientes Virtuais:
    Se um ambiente virtual estiver ativo ou especificado, o UV verifica o interpretador nesse ambiente para compatibilidade antes de procurar em outro lugar.
  • Consulta de Metadados:
    Cada executável descoberto é consultado por seus metadados de versão. Apenas executáveis que correspondem à versão solicitada (ou restrição de versão) são considerados. Arquivos não executáveis são ignorados.
  • Preferência e Fallback:
    Por padrão, o UV prefere instalações do Python do sistema, mas você pode ajustar isso com opções para preferir versões gerenciadas ou usar apenas versões gerenciadas/do sistema. Se nenhum interpretador adequado for encontrado, o UV pode baixar e instalar a versão necessária.

Este processo robusto de descoberta garante que o UV possa localizar e usar o interpretador Python correto de forma confiável em diferentes sistemas operacionais e ambientes.