← Python EspañolChapter 11 of 13

Módulos y Paquetes

## Objetivos de Aprendizaje - Crear e importar módulos - Entender la ruta de búsqueda de módulos - Trabajar con paquetes - Usar pip para gestión de paquetes ## Módulos ### ¿Qué es un Módulo? Un archivo Python (`.py`) es un módulo: ```python # mi_modulo.py def saludar(nombre): return f"¡Hola, {nombre}!" PI = 3.14159 ``` ### Importar Módulos ```python import mi_modulo print(mi_modulo.saludar("Ana")) # ¡Hola, Ana! print(mi_modulo.PI) # 3.14159 ``` ### Importar Elementos Específicos ```python from mi_modulo import saludar, PI print(saludar("Bob")) # ¡Hola, Bob! print(PI) # 3.14159 ``` ### Importar con Alias ```python import mi_modulo as mm print(mm.saludar("Carlos")) # ¡Hola, Carlos! from mi_modulo import saludar as decir_hola print(decir_hola("David")) # ¡Hola, David! ``` ### Importar Todo ```python from mi_modulo import * # Importa todos los nombres públicos print(saludar("Eva")) # ¡Hola, Eva! # Evita esto en producción - poco claro de dónde vino ``` ## La Ruta de Búsqueda de Módulos Python busca módulos en orden: 1. Directorio actual 2. Variable de entorno `PYTHONPATH` 3. Directorios predeterminados dependientes de la instalación ```python import sys print(sys.path) # Lista de directorios que Python busca ``` ## Módulos de la Biblioteca Estándar ### Módulo os ```python import os print(os.getcwd()) # Directorio actual os.listdir(".") # Listar archivos os.mkdir("nueva_carpeta") # Crear directorio os.rename("viejo.txt", "nuevo.txt") # Renombrar os.remove("archivo.txt") # Eliminar archivo os.path.exists("archivo.txt") # Verificar existe os.path.join("dir", "archivo") # Unir rutas ``` ### Módulo sys ```python import sys print(sys.version) # Versión de Python print(sys.argv) # Argumentos de línea de comandos sys.exit(0) # Salir del programa print(sys.path) # Ruta de búsqueda de módulos ``` ### Módulo math ```python import math print(math.pi) # 3.141592653589793 print(math.sqrt(16)) # 4.0 print(math.ceil(3.2)) # 4 print(math.floor(3.8)) # 3 print(math.pow(2, 3)) # 8.0 print(math.sin(math.pi/2)) # 1.0 ``` ### Módulo random ```python import random print(random.random()) # Float aleatorio 0-1 print(random.randint(1, 6)) # Int aleatorio 1-6 print(random.choice(["a", "b", "c"])) # Elección aleatoria print(random.sample([1,2,3,4,5], 3)) # 3 elementos aleatorios random.shuffle([1,2,3,4,5]) # Mezclar en lugar ``` ### Módulo datetime ```python import datetime ahora = datetime.datetime.now() print(ahora) # 2026-06-23 10:30:45.123456 print(ahora.year, ahora.month, ahora.day) # 2026 6 23 # Formateo de fecha print(ahora.strftime("%Y-%m-%d")) # 2026-06-23 print(ahora.strftime("%H:%M:%S")) # 10:30:45 # Parsear fecha fecha = datetime.datetime.strptime("2026-06-23", "%Y-%m-%d") ``` ### Módulo json ```python import json datos = {"nombre": "Ana", "edad": 30} json_str = json.dumps(datos) # A cadena JSON parseado = json.loads(json_str) # Desde cadena JSON # Operaciones de archivo with open("datos.json", "w") as f: json.dump(datos, f) with open("datos.json", "r") as f: cargado = json.load(f) ``` ## Paquetes ### ¿Qué es un Paquete? Un directorio con `__init__.py`: ```text mi_paquete/ __init__.py modulo1.py modulo2.py ``` ### __init__.py ```python # mi_paquete/__init__.py from .modulo1 import func1 from .modulo2 import func2 __all__ = ["func1", "func2"] # Qué obtiene 'from package import *' ``` ### Importar desde Paquetes ```python from mi_paquete import func1 from mi_paquete.modulo1 import func1 import mi_paquete ``` ### Importaciones Relativas ```python # En mi_paquete/sub_paquete/modulo.py from .. import otro_modulo # Paquete padre from . import modulo_hermano # Mismo paquete ``` ## pip - Gestor de Paquetes ### Comandos Básicos ```bash pip install nombre_paquete # Instalar pip install paquete==1.2.3 # Versión específica pip install "paquete>=1.0" # Versión mínima pip install -r requirements.txt # Desde archivo ``` ### Gestionar Paquetes ```bash pip list # Listar instalados pip show nombre_paquete # Mostrar info pip uninstall nombre_paquete # Desinstalar pip freeze > requirements.txt # Guardar dependencias ``` ### Entornos Virtuales ```bash python -m venv mi_entorno # Crear source mi_entorno/bin/activate # Activar (Linux/Mac) mi_entorno\Scripts\activate # Activar (Windows) pip install paquete # Instalar en entorno deactivate # Desactivar ``` ## Crear Paquetes Instalables ### setup.py ```python from setuptools import setup, find_packages setup( name="mipaquete", version="1.0.0", packages=find_packages(), install_requires=[ "requests>=2.25.0", ], author="Tu Nombre", description="Una breve descripción", ) ``` ### pyproject.toml (Moderno) ```toml [build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta" [project] name = "mipaquete" version = "1.0.0" dependencies = ["requests>=2.25.0"] ``` ## Paquetes Comunes de la Biblioteca Estándar | Paquete | Propósito | |---------|----------| | os | Interfaz del sistema operativo | | sys | Parámetros específicos del sistema | | math | Funciones matemáticas | | random | Generación de números aleatorios | | datetime | Fecha y hora | | json | Codificación/decodificación JSON | | csv | Manejo de archivos CSV | | re | Expresiones regulares | | collections | Contenedores especializados | | itertools | Herramientas de iteradores | | functools | Funciones de orden superior | | pathlib | Operaciones de rutas de archivos | | urllib | Manejo de URLs | | sqlite3 | Base de datos SQLite | | unittest | Marco de pruebas | ## Resumen - Los módulos son archivos `.py` que contienen código Python - Importar con `import modulo` o `from module import nombre` - Usar `as` para alias - Los paquetes son directorios con `__init__.py` - `pip install` instala paquetes de terceros - Usar entornos virtuales para aislar dependencias - `sys.path` muestra dónde Python busca módulos

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →