Bibliotecas de terceiros#

Eu vou frisar isso ao longo deste capítulo, e já falei algumas vezes ao longo dos capítulos anteriores: existe uma infinidade de módulos (bibliotecas) de terceiros que podem ser utilizados para facilitar a nossa vida como programadores e a ideia aqui não é ensinar cada um deles individualmente, mas sim mostrar que eles existem e o básico para que você possa ir atrás deles e aprender a utilizá-los.

Antes de falar de bibliotecas, vamos alinhar alguns conceitos básicos.

O que é …#

… biblioteca?#

Na seção anterior vimos o conceito de módulo, um arquivo .py isolado com várias funcionalidades. Uma biblioteca é simplesmente um conjunto de módulos (vários arquivos .py) que alguém escreveu para resolver um problema específico, e que você pode reutilizar esse código em seu projeto. Isso economiza tempo e esforço, já que você não precisa reescrever funcionalidades que já estão prontas. Basta instalar e usar a biblioteca em seu projeto.

Nota (sinônimos de biblioteca)

É muito comum ver outras palavras que são sinônimas de bibliotecas. As vezes você pode ouvir também pacotes ou até as palavra em inglês library ou framework. Todos esses termos se referem a mesma coisa: um conjunto de módulos que você pode reutilizar em seu projeto.

… PyPI?#

O PyPI, abreviação de Python Package Index, é como uma grande loja online, mas em vez de oferecer produtos, ele oferece bibliotecas Python que outras pessoas criam para serem usadas em outros projetos. Essas bibliotecas são gratuitas e desenvolvidas pela comunidade e muitas delas facilitam a vida de quem está programando ao oferecer diversas funcionalidades prontas. Ao invés de criar tudo do zero, você pode usar as bibliotecas que outras pessoas já criaram.

No exato momento que eu escrevo este capítulo em 01/10/2024, são:

  • 572.948 projetos

  • 6.127.605 lançamentos

  • 12.133.846 arquivos

  • 860.618 usuários

Estamos falando de mais de meio milhão de bibliotecas! Ou seja, é uma quantidade absurda de bibliotecas disponíveis para você utilizar. Essa quantidade imensa de bibliotecas se dá por um motivo simples: literalmente qualquer pessoa pode criar uma biblioteca e disponibilizá-la no PyPI. Existem até bibliotecas que são criadas e mantidas por grandes empresas de tecnologia como Google, Meta (antigo Facebook), Microsoft, NVidia, etc.

Se você optar por comprar algum curso, não se deixe enganar pelas frases aprenda tudo sobre Python, curso completo de Python, ou outras frases do gênero, acho que você já compreendeu que isso é impossível, certo? Python é uma linguagem extremamente vasta e em constante evolução. O que você pode fazer é aprender o básico e ir se aprofundando aos poucos, e uma das formas de fazer isso é aprendendo a utilizar bibliotecas de terceiros.

pip?#

Ao longo deste capítulo vamos ver como instalar bibliotecas de terceiros, e a ferramenta oficial do Python para instalar bibliotecas é o pip, um acrônimo do inglês para package installer for python, que ,traduzido para português, significa instalador de pacotes do Python.

O pip é um gerenciador de pacotes que vem instalado por padrão quando você instala o Python. Com ele você pode instalar, atualizar e remover bibliotecas Python. O pip é uma ferramenta de linha de comando, ou seja, você precisa abrir o terminal para utilizá-lo. Não se preocupe, pois vamos aprender a utilizá-lo. Quero só que você entenda o que é por agora.

É possível verificar se o pip está instalado em seu computador executando o comando abaixo no terminal:

$ pip --version
pip 24.0

… open-source?#

Open-source é uma expressão em inglês muito comum na área de tecnologia e programação, que traduzida, siginifica fonte aberta. Significa que o código-fonte (código usado para construir um programa) de um software está disponível para qualquer pessoa ver, modificar e compartilhar. O código-fonte são as instruções que os programadores escrevem para fazer o software funcionar. Quando um software é open-source, qualquer pessoa pode contribuir para melhorá-lo, corrigir erros ou adaptá-lo para suas próprias necessidades. Além disso, geralmente é gratuito, e as melhorias feitas por outras pessoas podem ser compartilhadas com todos.

Em resumo: open-source é como um projeto colaborativo, onde o código é aberto e acessível, permitindo que qualquer um participe ou use o software como quiser. Todas as bibliotecas no PyPI são open-source. Você pode ver e alterar o código-fonte de qualquer biblioteca que você instalar se você quiser.

Principais bibliotecas#

Novamente, não é possível listar todas as bibliotecas disponíveis no PyPI (são mais de meio milhão de bibliotecas disponíveis), mas vou listar algumas bastante populares divididas por categorias para você entender a utilidade de cada uma delas. Abaixo as informações estarão disponíveis da seguinte forma:

Categoria (para que serve a biblioteca)#

  • nome-da-biblioteca: descrição da biblioteca (o que ela faz)

Nota (termos desconhecidos)

A lista abaixo apresentará alguns termos que você talvez não conheça (como requisições HTTP, processamento de linguagem natural, machine learning, APIs) principalmente se você está começando agora. O que recomendo é pesquisar rapidamente o que significam os termos que você não compreendeu para que você possa entender de forma bem superficial a utilidade de cada biblioteca. Mas não se apegue a isso mesmo se você não comprrendeu exatamente o que é o termo. O objetivo é mostrar que existem bibliotecas para praticamente tudo que você imaginar.

Nota (profundidade e complexidade)

Não se preocupe em entender profundamente o que cada biblioteca faz. Novamente, o objetivo é mostrar que existem bibliotecas para praticamente tudo que você imaginar. Se você se interessar por alguma delas, você pode pesquisar mais a fundo. Existem bibliotecas que são tão complexas que há livros inteiros e cursos de centenas de horas dedicados para aprender a utilizá-las.

Manipulação de dados#

  • pandas: usado para análise e manipulação de dados em tabelas.

  • numpy: ideal para trabalhar com arrays e realizar cálculos matemáticos complexos.

  • polars: alternativa ao pandas e ao numpy, mais rápida e eficiente.

  • scipy: cálculos científicos e técnicos, incluindo estatísticas, otimização e integração numérica.

  • statsmodels: biblioteca para modelagem estatística avançada.

Visualização de dados#

  • matplotlib: usado para criar gráficos e visualizações de dados.

  • seaborn: baseado no matplotlib, é mais fácil de usar e cria gráficos mais bonitos.

  • plotly: cria gráficos interativos e visualizações de dados.

  • altair: biblioteca declarativa para criação de gráficos interativos.

  • bokeh: cria gráficos interativos e visualizações de dados.

Desenvolvimento web#

  • flask: framework web minimalista para criar aplicações web.

  • django: framework web completo para criar aplicações web.

  • fastapi: framework web moderno para criar APIs web.

Automação de tarefas#

  • requests: faz requisições HTTP em Python.

  • selenium: automatiza ações em navegadores web.

  • pyautogui: automatiza ações no teclado e no mouse.

  • beautifulsoup4: extrai dados de páginas web (web scraping).

  • scrapy: framework para extração de dados de páginas web (web scraping).

Machine learning e inteligência artificial#

  • scikit-learn: biblioteca de machine learning para Python.

  • tensorflow: biblioteca de machine learning e deep learning da Google.

  • keras: biblioteca de deep learning menos complexa que o tensorflow.

  • nltk: biblioteca para processamento de linguagem natural.

  • spacynlp: outra biblioteca para processamento de linguagem natural.

  • opencv: biblioteca com algoritmos de visão computacional.

Desenvolvimento de jogos#

  • pygame: foco criar jogos 2D em Python, com suporte para gráficos, som e entrada do usuário.

  • arcade: foco em criar jogos 2D com uma API fácil de usar e foco em simplicidade.

  • pyglet: voltada para jogos e multimídia que permite criar aplicativos com gráficos e som, sem dependências externas.

  • cocos2d: desenvolvimento de jogos 2D, com suporte para sprites, efeitos e física.

  • panda3d: motor de jogo 3D poderoso e flexível, adequado para a criação de jogos e simulações complexas.

Outras#

  • openpyxl: manipula planilhas Excel.

  • pillow: manipula imagens.

  • pyqt5: cria interfaces gráficas.

  • pyinstaller: transforma programas Python em executáveis.

  • pytest: framework para testes em Python.

  • poetry: gerenciador de dependências de projetos Python.

… e a lista não pára por aí.

Instalando/desinstalando bibliotecas#

Um ponto diferente de módulos nativos do Python é que você precisa instalar as bibliotecas de terceiros antes de utilizá-las. Para isso, você vai utilizar o pip, o gerenciador de pacotes do Python, conforme já mencionado anteriormente.

Para instalar uma biblioteca, você precisa executar o comando abaixo no terminal:

pip install nome-da-biblioteca

Por exemplo, para instalar a biblioteca pandas, você deve executar o comando

pip install pandas

Sobre versões de bibliotecas#

Já não basta o Python ter suas versões (lembra que vimos nesta seção sobre versões do Python?), ter milhares de bibliotecas disponíveis no PyPI, ainda temos que cada biblioteca tem diferentes versões. Sim, é isso mesmo, seja bem-vindo ao mundo de tecnologia! Tudo evolui em uma velocidade absurdamente alta que fica impossível acompanhar tudo em tempo hábil.

Um exemplo é a biblioteca numpy. Veja no site oficial do Numpy que eles tem várias versões (2.1.1, 2.0.2, 2.1.0, etc.). Quando instalamos uma biblioteca com o pip, o padrão é ele sempre instalar a versão mais atual, a mais recente lançada.

Porém, podemos instalar versões específicas de uma biblioteca modificando o comando de instalação. Por exemplo, para instalar a versão específica 2.1.0 do numpy, você deve adicionar (sem espaços em branco) dois sinais de igual == e a versão que você deseja instalar à frente do nome da biblioteca:

pip install numpy==2.1.0

Nota (==)

Não está errado não, são dois sinais de igual == mesmo. Isso é uma convenção do pip para instalar uma versão específica de uma biblioteca. Caso você utilize um sinal só de igual =, o pip vai te mostrar essa mensagem de erro.

O erro basicamente informa que você está usando = ao invés de ==, e sugere a correção.

pip install numpy=2.1.0
ERROR: Invalid requirement: 'numpy=2.1.0'
Hint: = is not a valid operator. Did you mean == ?

Mas porque eu ia querer instalar uma versão específica diferente da atual? Vou tentar contextualizar com situações de projetos reais de forma simplificada.

  • Imagine que você está desenvolvendo um projeto e utiliza a biblioteca numpy. Porém, você descobre que a versão mais recente do numpy tem um bug que afeta diretamente o seu projeto. Sim, bugs existem, e precisamos lidar com eles!

  • Ou então, você está trabalhando em um projeto que foi desenvolvido há alguns anos e utiliza uma versão antiga de uma biblioteca. Se você tentar instalar a versão mais recente, pode ser que o projeto pare de funcionar, pois a nova versão pode ter mudanças que quebram a compatibilidade com o seu projeto.

  • E, ainda, suponha que você use as bibliotecas selenium e pandas em um projeto. Porém, em uma situação hipotética, a versão mais recente do selenium pode não é compatível com a versão mais recente do pandas. Neste caso, você precisa instalar uma versão específica do selenium que seja compatível com a versão do pandas que você está utilizando.

Estas são apenas alguns exemplos de situações reais nas quais você pode precisar instalar uma versão específica de uma biblioteca.

Nota (problemas reais do dia-a-dia)

É, meu caro leitor, aqui já estamos colocando um pézinho no mundo real de projetos! Estamos falando de problemas comuns que inclusive profissionais com mais experiências enfrentam! Não acredita? Não acredite em mim mesmo não, pergunte para qualquer pessoa que trabalha com Python no LinkedIn se ela já teve problemas com conflito de dependências no dia-a-dia dela. Grandes as chances de que a resposta seja sim. E é por isso que é importante você entender esses conceitos desde já.

Instalando várias bibliotecas de uma vez#

Uma situação bastante comum em projetos maiores é ter várias dependências de bibliotecas terceiras. Em vez de instalar uma por uma, você pode criar um arquivo chamado requirements.txt e listar todas as bibliotecas que você precisa. Por exemplo, o conteúdo de um arquivo requirements.txt pode ser (reparem novamente que são dois sinais de igual ==):

numpy==1.21.2
pandas==1.3.3
matplotlib==3.4.3

Para instalar todas as bibliotecas listadas no arquivo requirements.txt, você pode executar o comando abaixo no terminal:

pip install -r requirements.txt

O pip vai ler o arquivo requirements.txt e instalar todas as bibliotecas listadas nele. Esta forma de instalação de várias bibliotecas com um único comando é muito útil para garantir que todos os desenvolvedores que trabalham em um projeto tenham as mesmas versões das bibliotecas instaladas.

E é uma boa prática também fixar as versões das bibliotecas usadas com == para evitar conflito de dependências.

Desinstalando bibliotecas#

Aqui não há muito segredo. Para desinstalar uma biblioteca, você precisa executar o comando abaixo no terminal:

pip uninstall nome-da-biblioteca

Utilizando bibliotecas#

Uma vez que uma determinada biblioteca está instalada, podemos importá-la em nossos scripts Python da mesma forma que importamos módulos nativos do Python. Um exemplo de script que importa as bibliotecas numpy e pandas:

import numpy as np
import pandas as pd

Aqui estamos trazendo todas as funcionalidades das duas bibliotecas para o escopo do nosso script. A partir daí, podemos utilizar todas as funções e classes disponíveis nas bibliotecas numpy e pandas.

Nota (apelido ou alias)

Repare que estamos utilizando as np e as pd para criar um apelido (ou alias) para as bibliotecas numpy e pandas, respectivamente. Isso é uma convenção muito comum na comunidade Python, pois economiza tempo e evita digitar o nome completo da biblioteca toda vez que você for utilizá-la.

Ao invés de usar, por exemplo, pandas.DataFrame, você pode usar pd.DataFrame chamando as funcionalidades da biblioteca pelo apelido ao invés do nome completo.