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.

dependência circular entre módulos sem que seja preciso refatorar

profundamente o código ou torná-lo mais complexo.

Item 53: Use ambientes virtuais para criar

dependências isoladas e reprodutíveis

Construir programas cada vez maiores e mais complexos fatalmente leva a

empregar inúmeros pacotes da comunidade do Python (consulte o Item 48:

“Saiba onde encontrar os módulos desenvolvidos pela comunidade”). Estaremos

cada vez mais usando pip para instalar pacotes como pytz, numpy e muitos

outros.

O problema é que, por default, pip instala os novos pacotes de forma global.

Dessa forma, todos os programas em Python no sistema são afetados por esses

módulos. Em tese, não deveria ser um problema. Se um pacote for instalado e

nunca for importado (com o comando import), como isso afetaria os programas?

O problema advém das dependências transitivas: os pacotes que são

dependências desses que instalamos manualmente. Por exemplo, podemos ver

que de quais pacotes o Sphinx depende, basta perguntar ao pip (desde que o

Sphinx já esteja instalado):

$ pip3 show Sphinx

---

Name: Sphinx

Version: 1.2.2

Location: /usr/local/lib/python3.4/site-packages

Requires: docutils, Jinja2, Pygments

Se instalarmos outro pacote como o flask, podemos ver que ele também depende

de Jinja2:

$ pip3 show flask

---

Name: Flask

Version: 0.10.1

Location: /usr/local/lib/python3.4/site-packages

Requires: Werkzeug, Jinja2, itsdangerous

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!