Sentencia `import` de Python: Módulos, espacios de nombres y mejores prácticas
En Python, import es cómo traes código de un módulo a otro. No es "import principal" — ese no es término Python. Aquí cómo funciona realmente, con patrones de uso diario.
Sintaxis básica import
import nombre_modulo
Esto carga nombre_modulo y lo vincula a variable en tu espacio de nombres actual. Accedes a su contenido con notación punto:
import math math.sqrt(16) # 4.0 math.pi # 3.14159...
Patrones import comunes
1. Importar módulo (Por defecto recomendado)
import pandas as pd import numpy as np df = pd.DataFrame({'a': [1,2,3]}) arr = np.array([1,2,3])
Ventajas: Explícito, legible, evita colisiones nombres, muestra origen.
2. Importar nombres específicos
from math import sqrt, pi sqrt(16) # 4.0 — sin prefijo pi # 3.14159...
Usar cuando: Usas pocos nombres intensamente. Evitar: from modulo import * (contaminación espacio nombres).
3. Importar con alias
import matplotlib.pyplot as plt import seaborn as sns
Convenciones estándar (pd, np, plt, sns, tf, torch) hacen código instantáneamente legible.
4. Imports condicionales / perezosos
# Solo importar dependencias pesadas cuando necesarias def analizar_datos(): import pandas as pd # Import local — inicio más rápido si no usado return pd.read_csv('datos.csv')
Cómo funciona import internamente
- Verifica
sys.modules— si ya cargado, devuelve módulo cacheado - Busca módulo vía
sys.path(dir actual, PYTHONPATH, site-packages, stdlib) - Ejecuta código módulo — corre sentencias top-level (def, class, asignaciones)
- Crea objeto módulo — espacio nombres para globals del módulo
- Cachea en
sys.modules - Vincula nombre en espacio nombres importador (por sentencia import)
Ruta búsqueda módulos (sys.path)
import sys sys.path # ['', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', # '/home/user/.local/lib/python3.11/site-packages', ...]
''= directorio script actual (o CWD si interactivo)- Instalar paquetes:
pip install paquete→ site-packages - Entornos virtuales aíslan
site-packages
Paquetes y submódulos
import paquete.submodulo from paquete import submodulo from paquete.submodulo import funcion
Directorio con __init__.py = paquete. __init__.py puede exponer submódulos:
# paquete/__init__.py from .submodulo import funcion_publica __all__ = ['funcion_publica']
Problemas comunes y soluciones
| Problema | Causa | Solución |
|---|---|---|
ModuleNotFoundError | No instalado / entorno equivocado / typo | pip install, verificar venv, revisar ortografía |
ImportError: cannot import name | Import circular / nombre no en módulo | Reestructurar, mover imports dentro funciones |
| Colisión nombres | from x import * o archivo local sombrea stdlib | No nombrar archivos math.py, random.py; usar imports explícitos |
| Error import relativo | Ejecutar módulo como script | Ejecutar como python -m paquete.modulo o usar imports absolutos |
Mejores prácticas
- Librería estándar primero, luego terceros, luego locales — cada grupo alfabético
- Un import por línea (PEP 8)
- Usar
import modulosobrefrom modulo import * - Alias: Usar estándares comunidad (pd, np, plt, tf, torch)
- Evitar manipulación runtime path — usar empaquetado correcto (
pyproject.toml,pip install -e .) - Type checking:
from __future__ import annotations+ guardasTYPE_CHECKING
Ejemplo: Bloque import limpio
# Librería estándar import json import os from pathlib import Path from typing import List, Optional # Terceros import numpy as np import pandas as pd import requests # Locales from miproyecto.config import settings from miproyecto.models import User from miproyecto.utils import logger
El sistema import de Python es potente, explícito y predecible — una vez entiendes el modelo de espacios de nombres. La regla de oro: haz obvio de dónde viene cada nombre. Tu yo futuro (y compañeros) te lo agradecerán.
Divisas y cambio
- El Papel Esencial de los Bancos en la Economía
- Cómo convertir dólar neozelandés (NZD) a euro (EUR)
- ¿Cuál es la moneda de El Salvador?
- Cómo cambiar monedas mexicanas en EE. UU. por moneda estadounidense
- ¿Qué monedas se usaban antes del euro?
- Moneda Texas: Por Qué su Valor No Puede "Caer"
- Cómo obtener una tarjeta de crédito en India para un ciudadano estadounidense
- Entender los tipos de cambio de moneda
- Enviar Dinero a Nigeria con MoneyGram
