2.1 – Librerías en Python

¿Qué es una librería en Python?

Una librería (o “biblioteca”) es código que alguien ya escribió para resolver un problema común: hacer peticiones web, leer PDFs, crear gráficos, trabajar con fechas, etc.

  • Python estándar: viene “de serie” (por ejemplo json, os, math, datetime).
  • Librerías externas: se instalan aparte (por ejemplo requests, pandas, flask, numpy).

Regla mental útil:

  • Si lo importas y no lo instalas, normalmente es estándar.
  • Si lo importas y te da error, probablemente hay que instalarlo.

¿Qué significa import?

Cuando haces:





import requests

Estás diciendo: “Python, carga ese paquete para que pueda usar sus funciones”.

También puedes importar cosas concretas:





from datetime import datetime

O ponerle un alias (muy común):





import pandas as pd

¿Dónde se instalan librerías?

En Python, las librerías se instalan en “un Python concreto”, que puede ser:

  1. Python del sistema (global).
  2. Un entorno virtual (recomendado para clase/proyectos).
  3. Una instalación específica (por ejemplo, un Python dentro de VS Code, conda, etc.).

La confusión típica del alumnado:

“He instalado requests pero sigue dando error”
Casi siempre es porque instalaron en un Python y ejecutan con otro.


Gestores de paquetes: pip

pip es el instalador estándar de paquetes Python.

Comandos básicos:





pip --version
python3 -m pip --version

Instalar una librería:





python3 -m pip install requests

Actualizar una librería:





python3 -m pip install --upgrade requests

Ver lo instalado:





python3 -m pip list

Ver información de un paquete:





python3 -m pip show requests

La forma “pro” para clase: entornos virtuales (venv)

Esto evita romper el sistema y hace que cada proyecto tenga sus librerías.

Crear entorno virtual

En la carpeta del proyecto:





python3 -m venv venv

Activarlo

Linux/Mac:





source venv/bin/activate

Windows (PowerShell):





venv\Scripts\Activate.ps1

Windows (CMD):





venv\Scripts\activate.bat

Cuando está activo, normalmente verás (venv) al inicio de la terminal.

Instalar dentro del entorno





python -m pip install requests

5.4 Salir del entorno





deactivate

Cómo saber si algo es estándar o externo

Ejemplos:

  • Estándar:




import json
import os
import datetime
  • Externas (requieren pip):




import requests
import pandas
import flask

Buenas prácticas al trabajar con librerías

Fijar dependencias: requirements.txt

Generar lista de dependencias del entorno:





python -m pip freeze > requirements.txt

Instalar dependencias en otro equipo:





python -m pip install -r requirements.txt

Esto es oro puro para que los proyectos “funcionen igual” en todas las máquinas.

Leer documentación y “ejemplos mínimos”

La documentación oficial suele tener:

  • instalación
  • ejemplos pequeños
  • parámetros importantes
  • errores comunes

Ejemplo completo con requests (GET)

Vamos a hacer una petición HTTP a una API pública de ejemplo y procesar JSON.

Instalar requests

Si estás en venv, mejor.





python -m pip install requests

Script: peticion_get.py





import requests

URL = "https://httpbin.org/get"

def main():
    try:
        # timeout: evita que el programa se quede colgado si el servidor no responde
        response = requests.get(URL, timeout=10)

        # Lanza excepción si el status code es 4xx/5xx
        response.raise_for_status()

        # httpbin devuelve JSON
        data = response.json()

        print("✅ Status:", response.status_code)
        print("✅ Tu IP según el servidor:", data.get("origin"))
        print("✅ Headers enviados (ejemplo):")
        headers = data.get("headers", {})
        print("   User-Agent:", headers.get("User-Agent"))

    except requests.exceptions.Timeout:
        print("⏳ Error: timeout (el servidor tardó demasiado en responder).")
    except requests.exceptions.HTTPError as e:
        print("🚫 Error HTTP:", e)
    except requests.exceptions.RequestException as e:
        # Cubre: problemas de red, DNS, conexión, etc.
        print("🌐 Error de red:", e)
    except ValueError:
        # Si .json() falla porque la respuesta no era JSON
        print("🧩 Error: la respuesta no era JSON válido.")

if __name__ == "__main__":
    main()

Ejecutarlo





python peticion_get.py

Qué deberían observar:

  • status_code (200 si ok)
  • origin (la IP “vista” por el servidor)
  • headers (cabeceras HTTP)

Ejemplo con parámetros (GET con params)

params construye la query ?clave=valor.





import requests

URL = "https://httpbin.org/get"

params = {
    "busqueda": "python",
    "pagina": 1
}

r = requests.get(URL, params=params, timeout=10)
print("URL final:", r.url)
print("Respuesta JSON:", r.json().get("args"))

Ejemplo POST (enviar datos)

Enviar JSON





import requests

URL = "https://httpbin.org/post"

payload = {
    "usuario": "alumno01",
    "rol": "tester"
}

r = requests.post(URL, json=payload, timeout=10)
r.raise_for_status()

data = r.json()
print("Enviado:", data.get("json"))

Enviar formulario (application/x-www-form-urlencoded)





import requests

URL = "https://httpbin.org/post"

form_data = {
    "email": "alumno@ejemplo.com",
    "password": "1234"
}

r = requests.post(URL, data=form_data, timeout=10)
print(r.json().get("form"))

Cabeceras y autenticación básica

Cabeceras (headers)





import requests

URL = "https://httpbin.org/headers"

headers = {
    "User-Agent": "ClasePython/1.0",
    "X-Profesor": "Antonio"
}

r = requests.get(URL, headers=headers, timeout=10)
print(r.json())

Auth básica (solo ejemplo didáctico)





import requests

URL = "https://httpbin.org/basic-auth/user/pass"
r = requests.get(URL, auth=("user", "pass"), timeout=10)
print(r.status_code, r.json())

Errores típicos (y cómo cazarlos rápido)

“ModuleNotFoundError: No module named ‘requests’”

  • No está instalado en ese Python.
  • Solución:




python -m pip install requests
python -c "import requests; print(requests.__version__)"

“Funciona en terminal pero no en VS Code”

  • VS Code está usando otro intérprete.
  • Solución: seleccionar el intérprete del venv en VS Code (Python: Select Interpreter).

“Se queda colgado”

  • Falta timeout.
  • Solución: siempre pon timeout=... en peticiones.