"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Dominando o gerenciamento de projetos Python com uv PartÉ hora de abandonar a poesia

Dominando o gerenciamento de projetos Python com uv PartÉ hora de abandonar a poesia

Publicado em 2024-11-04
Navegar:265

Mastering Python Project Management with uv PartIt

Você está cansado de fazer malabarismos com várias ferramentas como pip, virtualenv, conda, poesia e pyenv apenas para manter seus ambientes e dependências Python sob controle? Você não está sozinho! Gerenciar projetos Python pode parecer uma dor de cabeça, especialmente com todos os diferentes gerenciadores de pacotes e ferramentas que você precisa lidar.

Enter uv — o Universal Virtualenv. Pense nele como um gerenciador de pacotes completo projetado para agilizar e acelerar seu processo de desenvolvimento Python.


Uma pequena história de fundo

uv se inspira em Rye, outro gerenciador de embalagens moderno, para unificar os melhores recursos de pip, pip-tools, pyenv, virtualenv e poesia. Construído em Rust, o uv não é apenas rápido, mas também altamente eficiente, simplificando tudo, desde o gerenciamento de dependências até a criação de ambientes virtuais.

O objetivo do UV

Em poucas palavras, uv é uma questão de consolidação. Por que alternar entre diversas ferramentas quando você pode ter uma experiência unificada? O objetivo é eliminar o atrito do desenvolvimento em Python, oferecendo uma maneira mais consistente e rápida de gerenciar seus projetos. E também está explodindo rápido! Isso abre novas portas, para uma gestão dinâmica


1. Código portátil com metadados de script embutidos

Vamos conversar sobre dependências

Um dos recursos mais interessantes do uv é a capacidade de adicionar dependências diretamente em seu script Python. Imagine que você tem um script simples como este:

# app.py
import requests
from rich.pretty import pprint

response = requests.get("https://peps.python.org/api/peps.json")
data = response.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])

Executar este script geralmente significa configurar um ambiente virtual e instalar dependências manualmente. Com uv, você pode incorporar todas as suas dependências diretamente no script, tornando-o autocontido e compartilhável:

$ uv add --script app.py 'requests



Geração automática de metadados

Isso adiciona metadados ao arquivo de script:

# /// script
# dependencies = [
#   "requests



E é isso! Você pode compartilhar este arquivo com outra pessoa e ela pode simplesmente executar:

$ uv run app.py

E voilà – nenhuma configuração externa é necessária! Tudo graças à velocidade e eficiência do UV.


2. Criação e gerenciamento de ambientes virtuais

Introdução aos ambientes virtuais

Por padrão, uv requer que pacotes sejam instalados em ambientes virtuais para manter seu sistema limpo e evitar conflitos entre diferentes projetos. Criar um ambiente virtual com uv é simples:

$ uv venv

Isso criará um diretório .venv contendo o ambiente isolado. Se quiser especificar um diretório personalizado ou uma versão do Python, você pode fazer:

$ uv venv my_env --python 3.9

O ambiente está pronto para uso e o uv irá detectá-lo automaticamente para todos os seus comandos, como instalação de pacotes ou execução de scripts.

Quando usar uv add vs. uv pip install

  • Use uv add: Quando você deseja adicionar dependências ao arquivo pyproject.toml do seu projeto. Isso é melhor quando você está desenvolvendo um projeto e deseja acompanhar todas as dependências, tornando o projeto facilmente compartilhável e reproduzível. Abordaremos isso no próximo post, fique ligado!

    $ uv add fastapi
    

    Isso atualizará seu pyproject.toml e bloqueará a versão em uv.lock.

  • Use uv pip install: Quando você deseja instalar pacotes para uso rápido sem modificar o arquivo do projeto, ou para ferramentas globais onde você não precisa rastreá-los em um pyproject.toml. Pense no uv pip como uma instalação imediata e única.

    $ uv pip install requests
    

Escolher o comando certo garante que seu projeto seja gerenciado adequadamente e fácil de compartilhar ou implantar.


3. Bloqueie versões para reprodutibilidade

Já teve seu código quebrado devido a atualizações?

Todos nós já passamos por isso – seu código funciona hoje e quebra amanhã porque um pacote é atualizado. Com uv, você pode evitar isso bloqueando versões de pacotes para garantir consistência e reprodutibilidade:

[tool.uv]
exclude-newer = "2023-10-16T00:00:00Z"

Dessa forma, mesmo que surjam novas versões de suas dependências, seu projeto permanece estável. Perfeito para projetos de longo prazo onde você não pode se dar ao luxo de surpresas!


4. Gerenciando versões do Python

Projetos diferentes, versões diferentes do Python? Sem problemas!

Muitos desenvolvedores precisam trabalhar em vários projetos que exigem diferentes versões do Python. uv torna a troca de versões tão fácil quanto:

$ uv python install 3.8 3.9 3.10

Depois que as versões são instaladas, alternar entre elas é fácil:

$ uv run --python 3.10 app.py

E se você quiser bloquear uma versão específica para um projeto:

$ uv python pin 3.9

Chega de fazer malabarismos com comandos pyenv - uv cuida de todo o trabalho pesado para você.


5. Diga adeus aos aborrecimentos

É pip - mas mais rápido e melhor

uv oferece uma experiência semelhante à do pip, mas com desempenho turboalimentado. A instalação de pacotes é simples:

$ uv pip install flask

Precisa adicionar dependências opcionais ou instalar diretamente de um repositório GitHub? Sem problemas:

$ uv pip install 'torch>=1.10.0' "git https://github.com/astral-sh/ruff"

Chega de esperar por instalações lentas – o UV faz o trabalho de forma rápida e eficaz.


6. Gerencie ferramentas CLI globalmente e facilmente

Do preto ao rufo, obtenha suas ferramentas sem complicações

Esteja você linting código ou formatação de arquivos, o uv facilita a instalação de ferramentas CLI:

  • Globalmente:

    $ uv tool install ruff
    
  • Localmente dentro de um projeto:

    $ uv add ruff
    
  • Executar comandos efêmeros sem instalar globalmente:

    $ uvx black my_code.py
    

Diga adeus aos conflitos de pacotes e à poluição ambiental - basta executar suas ferramentas quando e onde você precisar delas.


Se você deseja turbinar seu desenvolvimento em Python e quer parar de lutar com várias ferramentas, uv é a sua resposta. Com seus comandos simplificados, ambientes reproduzíveis e gerenciamento eficiente de pacotes, uv torna o desenvolvimento em Python um prazer e não uma tarefa árdua.

Pronto para dar uma volta com UV? ? Comece hoje e experimente uma maneira melhor de gerenciar seus projetos Python.


Fique ligado na Parte 2, onde nos aprofundaremos em recursos avançados, como aproveitar o pyproject.toml, lidar com instalações de ferramentas globais versus locais e como o uv pode ser seu melhor amigo ao gerenciar ambientes complexos.

Boa codificação! ?✨

Para mais detalhes e documentação completa, confira a documentação uv.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/thomas_bury_b1a50c1156cbf/mastering-python-project-management-with-uv-part1-its-time-to-ditch-poetry-3bi0?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3