15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

O conflito surge com o tempo porque, à medida que evoluem, Sphinx e flask

divergem. É possível que, no momento, ambos requeiram a mesma versão de

Jinja2 e tudo corra bem. Contudo, daqui a seis meses o Jinja2 pode lançar uma

nova versão que implemente mudanças catastróficas aos programas que usam

essa biblioteca. Se atualizarmos a versão global de Jinja2 com o comando pip

install --upgrade, podemos descobrir estarrecidos que Sphinx deixou de

funcionar, enquanto flask roda sem problemas.

A causa dessa quebradeira é que o Python só pode ter uma única versão global

de cada módulo. Se um dos pacotes instalados precisar da versão nova e outro

pacote precisar da antiga, o sistema não funcionará corretamente.

Esse problema aparece até mesmo quando os mantenedores do pacote dão seu

melhor para preservar a compatibilidade de API entre os lançamentos (consulte

o Item 50: “Use pacotes para organizar módulos e criar APIs estáveis”), novas

versões de uma biblioteca podem subitamente mudar de comportamento, e o

código externo que consome a API às vezes depende desse comportamento. Os

usuários em um sistema podem manualmente atualizar um pacote mas não os

demais. Há sempre o risco constante do chão se abrir sobre seus pés.

Essas dificuldades são multiplicadas quando colaboramos com outros

desenvolvedores que fazem seu trabalho em computadores separados. É razoável

imaginar que não só as versões dos pacotes, mas até mesmo a versão do Python,

sejam ligeiramente diferentes de um desenvolvedor para outro, provocando

situações altamente frustrantes nas quais a base de código funciona

perfeitamente na máquina de um dos programadores, mas falha

espetacularmente na de outro.

A solução para todos esses problemas é uma ferramenta chamada pyvenv, que

cria ambientes virtuais. Desde o Python 3.4, a ferramenta pyvenv está disponível

por default na instalação do Python (também acessível via python -m venv).

Versões anteriores do Python requerem instalação de um pacote à parte (pip

install virtualenv) e o nome do comando é diferente, virtualenv.

O pyvenv permite criar ambientes Python isolados. Usando pyvenv, podemos ter

muitas versões diferentes do mesmo pacote instalado no mesmo sistema ao

mesmo tempo sem qualquer conflito. Isso permite trabalhar em muitos projetos

simultaneamente e usar muitas ferramentas diferentes no mesmo computador.

O pyvenv instala versões explícitas dos pacotes e suas dependências em

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!