2 pontos por GN⁺ 2024-08-23 | 1 comentários | Compartilhar no WhatsApp

Reflexões e texto de Armin Ronacher

Rye e uv para empacotamento Python: agosto é a estação da colheita

  • Há alguns meses, ele transferiu a manutenção da ferramenta de empacotamento Rye para a Astral
  • Nos últimos meses, a equipe da Astral vem desenvolvendo muitas ferramentas para empacotamento Python
  • Em lançamentos recentes, o uv adicionou recursos como manipulação de arquivos pyproject.toml, suporte a workspaces, referências a pacotes locais e instalação de scripts
  • O uv também pode gerenciar instalações do Python, tornando-se muito semelhante ao Rye
  • Quem usa Rye deve prestar atenção ao uv e enviar feedback

Apresentação na EuroPython

  • Recentemente, na EuroPython realizada em Praga, ele apresentou sua visão sobre empacotamento Python e as lições aprendidas ao criar o Rye
  • O objetivo das ferramentas de empacotamento é se tornar a melhor ferramenta usada por todos
  • Python se tornou uma plataforma extremamente popular graças ao investimento e ao interesse em AI e ML
  • Ele quer que quem está aprendendo Python se lembre de uma excelente experiência de desenvolvimento
  • Hoje isso é difícil por causa do excesso de ferramentas e das inconsistências

O domínio das ferramentas

  • Domínio significa que a maior parte do investimento vai para uma única stack
  • Ferramentas como o Rye devem desaparecer quando uma ferramenta dominante estiver estabelecida
  • É muito provável que o uv seja essa ferramenta
  • No fim, o Rye será substituído pelo uv

Evolução do ecossistema de empacotamento

  • Muitas ferramentas de empacotamento foram construídas com base na evolução do ecossistema Python
  • Houve muitos avanços, como a transição de arquivos setup.py de eggs para wheels e a introdução de padrões de metadados
  • A evolução de crates em Rust e de bibliotecas Python tornou essas ferramentas possíveis

Próximos passos da comunidade

  • A comunidade deve recomendar menos ferramentas
  • Houve um tempo em que se recomendavam ez_setup.py e easy_install
  • Hoje recomendam pip, pip-tools, poetry, PDM e outros
  • Quem mantém projetos importantes em Python deve experimentar o uv e considerar se vale recomendá-lo

O financiamento de VC da Astral

  • É preciso refletir sobre como o financiamento de VC recebido pela Astral pode afetar o futuro
  • Ao olhar para o código e os recursos do uv, mesmo no pior cenário a comunidade estará em situação melhor do que antes de o uv existir

Resumo do GN⁺

  • Este texto trata da evolução das ferramentas de empacotamento Python e do papel da comunidade
  • O uv oferece muitos recursos e tem grande chance de substituir o Rye
  • A comunidade precisa recomendar menos ferramentas e experimentar o uv
  • É preciso considerar o impacto futuro do financiamento de VC da Astral
  • Ferramentas com recursos semelhantes incluem pip, poetry e PDM

1 comentários

 
GN⁺ 2024-08-23
Comentários no Hacker News
  • A versão mais recente do uv reduziu bastante o tempo do processo de release do Home Assistant

    • O tempo de release caiu de cerca de 2,5 horas para cerca de 20 minutos
    • Mais detalhes podem ser encontrados no blog de desenvolvedores do Home Assistant
  • No início, havia a expectativa de que uma nova ferramenta resolveria o problema de "packaging" do Python, mas na prática ela trata de gerenciamento de pacotes

    • Pessoalmente, nunca houve um grande problema com gerenciamento de pacotes em Python
    • O pip geralmente funciona bem
  • É incômodo que no Python não seja fácil empacotar aplicações como executáveis

    • Em ambientes de produção, é comum ver git clone e criação de virtualenv
    • Isso não é bom do ponto de vista de segurança
  • Existem problemas no packaging do Python, mas ainda assim muita coisa foi bem resolvida com o pip padrão

    • A grande mudança foi a transição do virtualenv original para o módulo embutido venv
    • Para levar o gerenciamento de dependências a sério, é melhor montar um monorepo como as FAANG
  • Por causa do golpe de VC no npm, da aquisição pela Microsoft e do status jurídico de organização sem fins lucrativos do OpenAI, há relutância em confiar a infraestrutura principal de linguagens a esse tipo de organização

    • Os contribuidores individuais são excelentes, mas o problema é o alinhamento financeiro no nível organizacional
    • Lint rápido, verificação de tipos, varredura de código e assistentes de PR podem ser trocados a qualquer momento, mas o fluxo de instalação e o repositório de pacotes não
  • O problema dessas ferramentas é a autoridade

    • Como não têm aprovação da PyPA, são diferentes do cargo
    • A PyPA não conseguiu oferecer uma solução abrangente
    • Até 3 ou 4 anos atrás, parecia que poetry e pipenv resolveriam o problema
    • A PyPA deveria participar da astral.sh, mas fica a dúvida se conseguiria fazer isso sem querer controlar tudo
  • Armin argumenta que o uv deveria dominar essa área, mas reconhece que o apoio de VC pode causar problemas

    • A solução dele é que o uv é muito fácil de sofrer fork
    • Porém, forks causam ainda mais fragmentação
  • Na empresa, estão tentando migrar o software para uv por causa da lentidão do poetry

    • Leram muita documentação, mas na prática ainda fizeram pouca coisa
    • A migração anterior para poetry foi muito mais simples
    • O uv ainda mantém muitos dos problemas de pacotes do Python
  • Dá para entender quem quer pular esta rodada e esperar pelo "gerenciador de pacotes Python: agora realmente resolvemos!" de 2026

    • Os usuários de Nix continuam satisfeitos
  • Há pessoas realmente apaixonadas por desenvolver gerenciadores de pacotes

    • Se essa situação continuar, um novo gerenciador de pacotes vai surgir a cada ano