Módulo 6 - Ambientes virtuais e pip
Usando um pacote externo na prática
11 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Importar e usar um pacote externo instalado com pip.
- Fazer uma requisição GET a uma API pública de teste.
- Ler o código de status HTTP da resposta.
- Converter a resposta JSON em dados Python.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Usando um pacote externo na prática.
Os objetivos desta aula. Importar e usar um pacote externo instalado com pip. Fazer uma requisição GET a uma API pública de teste. Ler o código de status HTTP da resposta. Converter a resposta JSON em dados Python.
Veja o essencial, parte por parte.
Do pip ao import. Depois de instalar com pip install requests, use import requests no código.
O pedido e o código de status. A operação mais comum na web é o GET: pedir um recurso e receber os dados dele.
Lendo a resposta em JSON. APIs da web costumam devolver os dados em JSON, um formato de texto que representa objetos e listas.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Do pip ao import
Instalar o requests foi só a preparação. Para usá-lo, você o traz para o programa com import requests, do mesmo jeito que importa um módulo da biblioteca padrão. A diferença é que o requests não vem com o Python: ele só existe porque você o instalou naquela despensa. Por isso o import só funciona com o ambiente virtual ativo, onde o pacote está. Se você tentar importar o requests fora do ambiente, o Python reclama que não encontrou o módulo, e a mensagem é justamente essa pista.
Para o exemplo, vamos conversar com uma API pública de teste. Existem serviços gratuitos feitos para quem está aprendendo, que devolvem dados de brincadeira em JSON, sem cobrar nada e sem pedir cadastro. Um pedido a esse tipo de API é seguro para praticar. A ideia é fazer o menor exemplo útil possível: pedir um recurso, olhar se o pedido deu certo e ler o que voltou. Nada de servidores, senhas ou dados de verdade. Só o essencial para ver um pacote externo funcionando de ponta a ponta.
O pedido e o código de status
A operação mais comum na web é o GET: pedir um recurso e receber os dados dele. Com o requests, isso é uma linha: você chama requests.get com o endereço e guarda o resultado numa variável, aqui chamada resposta. Antes de mexer nos dados, cheque o código de status, que fica em resposta.status_code. O número 200 quer dizer que deu tudo certo. Se vier 404, o recurso não existe; se vier 500, o problema é do servidor. Conferir isso antes evita tratar como dado válido uma resposta que, na verdade, foi um erro.
import requests
url = "https://jsonplaceholder.typicode.com/todos/1"
resposta = requests.get(url, timeout=10)
print("Status:", resposta.status_code)
if resposta.status_code == 200:
print("Pedido bem-sucedido.")
else:
print("Algo deu errado no pedido.")Um GET a uma API pública de teste, checando o código de status antes de seguir.
Repare no timeout=10 no pedido. Ele diz ao requests para desistir se o servidor não responder em dez segundos, em vez de esperar para sempre. É um hábito saudável: pedidos de rede podem travar, e um limite de tempo evita que o seu programa fique pendurado. Esse é o tipo de detalhe que separa um script frágil de um código cuidadoso. A checagem do status e o timeout juntos já deixam a requisição bem mais robusta do que simplesmente confiar que tudo vai dar certo.
Lendo a resposta em JSON
APIs da web costumam devolver os dados em JSON, um formato de texto que representa objetos e listas. O requests facilita a leitura: o método resposta.json() converte esse texto direto em dados Python, normalmente um dicionário ou uma lista de dicionários. A partir daí, você trabalha como já sabe, acessando valores por chave. No exemplo, a API de teste devolve um pequeno objeto com campos como título e estado de conclusão, e você lê cada um pelo nome.
import requests
url = "https://jsonplaceholder.typicode.com/todos/1"
resposta = requests.get(url, timeout=10)
if resposta.status_code == 200:
dados = resposta.json() # vira um dicionario Python
print("Titulo:", dados["title"])
print("Concluida?", dados["completed"])
else:
print("Nao foi possivel obter os dados. Status:", resposta.status_code)resposta.json() transforma o corpo da resposta em um dicionário Python.
Junte as peças e o exemplo conta uma história completa: você importou um pacote que instalou, pediu um recurso a uma API, verificou se o pedido deu certo e transformou a resposta em dados que o Python entende. É pouco código, mas mostra o valor do ecossistema. Sem o requests, fazer um pedido HTTP à mão dá bem mais trabalho. Com ele, cabe em poucas linhas legíveis. Esse é o retorno de aprender ambientes virtuais e pip: você passa a usar o trabalho de milhares de pessoas com segurança e organização.
Teste rápido
No exemplo, o que o método resposta.json() faz?
Perguntas frequentes
- Este exemplo com requests roda no Playground do curso?
- Não. O requests é um pacote externo, instalado com o pip numa despensa do computador, e o exemplo faz um pedido de rede. O Playground roda no navegador e não instala pacotes externos. Acompanhe esta aula no seu computador, com o ambiente virtual ativo.
- É seguro fazer esse pedido para a API de teste?
- Sim. O exemplo usa uma API pública gratuita feita para aprendizado, que devolve dados fictícios em JSON, sem cadastro e sem custo. É um exemplo educativo para ilustrar o uso de um pacote externo, não um serviço de produção nem envio de dados pessoais.
- Por que colocar timeout no requests.get?
- Para o programa não ficar travado esperando para sempre caso o servidor não responda. O timeout=10 diz ao requests para desistir após dez segundos. É um hábito saudável em qualquer chamada de rede, porque pedidos pela internet podem demorar ou falhar.
- O que significa o código de status 200?
- É o código HTTP que indica sucesso: o pedido foi atendido e a resposta traz os dados esperados. Outros números sinalizam problemas, como 404 para recurso não encontrado e 500 para erro no servidor. Checar o status antes de ler os dados evita tratar um erro como se fosse resposta válida.
- Preciso importar o requests toda vez que uso?
- Sim, em cada arquivo que for usá-lo você escreve import requests no topo. E lembre que o import só funciona com o ambiente virtual ativo, onde o pacote está instalado. Fora do ambiente, o Python não encontra o módulo e avisa que ele não existe.
- Qual a diferença entre resposta.json() e resposta.text?
- O resposta.text devolve o corpo da resposta como texto puro. O resposta.json() vai além: interpreta esse texto, que veio em formato JSON, e o converte em dados Python prontos para usar, como dicionários e listas. Para APIs que respondem em JSON, o .json() é o caminho direto.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.