Python de Cero a Pro - Cap. 21 - Empaquetado y Distribución con pipx
Serie: Arquitectura de Sistemas 🏗️
Section titled “Serie: Arquitectura de Sistemas 🏗️”Este es el módulo final de nuestra práctica secuencial.
- Módulo de Persistencia JSON 🗄️
- Módulo de Procesamiento de Fechas 🗓️
- Módulo de Seguridad y Ofuscación 🛡️
- Arquitectura de Modelos de Datos 🧩
- Interfaz de Usuario TUI Profesional 🎮
- Integración CLI y Lanzador Principal 🚀
- Empaquetado y Distribución Profesional (Estás aquí) 📍
Guía de Instalación y Empaquetado - CapPython 📦
Section titled “Guía de Instalación y Empaquetado - CapPython 📦”En este capítulo, daremos el paso final para convertir nuestro código en una aplicación real que se puede instalar y ejecutar desde cualquier lugar de la terminal, tal como lo hacen herramientas profesionales.
🌳 Estructura de Archivos Recomendada (Estándar src)
Section titled “🌳 Estructura de Archivos Recomendada (Estándar src)”Para que el empaquetado funcione de manera moderna y organizada, tu proyecto debe lucir así:
CapPython/├── src/│ └── cap-python/ # Tu paquete principal│ ├── __init__.py│ ├── main.py # Punto de entrada│ ├── cli/│ │ ├── __init__.py│ │ └── users_cli.py│ └── tui/│ ├── __init__.py│ └── interface.py├── pyproject.toml # Configuración moderna de empaquetado├── requirements.txt # Dependencias└── README.md🛠️ Paso 1: Configurar el archivo de Empaquetado (pyproject.toml)
Section titled “🛠️ Paso 1: Configurar el archivo de Empaquetado (pyproject.toml)”Para que herramientas como pipx o pip entiendan cómo instalar nuestro proyecto, necesitamos un archivo pyproject.toml en la raíz. Este archivo define el nombre de nuestra aplicación y qué comando queremos usar para lanzarla.
[build-system]requires = ["setuptools>=61.0"]build-backend = "setuptools.build_meta"
[project]name = "cap-python"version = "0.1.0"description = "Proyecto de capacitaciónn - Qué Pasa Linux"readme = "README.md"requires-python = ">=3.10"dependencies = [ "click", "rich",]
# Aquí definimos el comando global que funcionará en la terminal[project.scripts]capn = "cappython.main:iniciar_aplicacion"
[tool.setuptools.packages.find]where = ["src"]💻 Configuración en Windows (PowerShell)
Section titled “💻 Configuración en Windows (PowerShell)”Opción 1: Entorno Virtual (Recomendado para desarrollo)
Section titled “Opción 1: Entorno Virtual (Recomendado para desarrollo)”# Crear el entornopython -m venv venv
# Activar el entorno.\venv\Scripts\Activate.ps1
# Instalar dependencias localespip install -r requirements.txtOpción 2: Instalación Global como “App” (pipx) 🚀
Section titled “Opción 2: Instalación Global como “App” (pipx) 🚀”Si deseas que capn sea un comando que funcione en cualquier lugar de tu terminal sin activar el venv, usa pipx.
- Instalar pipx (Usa el lanzador
pypara evitar conflictos):Terminal window py -m pip install pipxpy -m pipx ensurepath - Reiniciar terminal (Cierra y abre de nuevo PowerShell).
- Instalar el proyecto:
Nota:
Terminal window py -m pipx install . --editable--editablepermite que tus cambios en el código se reflejen al instante.
🐧 Configuración en Linux / WSL (Ubuntu/Debian)
Section titled “🐧 Configuración en Linux / WSL (Ubuntu/Debian)”Paso 1: Entorno Virtual
Section titled “Paso 1: Entorno Virtual”python3 -m venv venvsource venv/bin/activatepip install --upgrade pippip install -r requirements.txtPaso 2: Instalación Global en Fedora / RHEL
Section titled “Paso 2: Instalación Global en Fedora / RHEL”- Instalar pipx:
Terminal window sudo dnf install pipx -ypipx ensurepath - Instalar el proyecto:
Terminal window pipx install . --editable
🛠️ Solución de Errores Comunes
Section titled “🛠️ Solución de Errores Comunes”1. ModuleNotFoundError: No module named 'click'
Section titled “1. ModuleNotFoundError: No module named 'click'”Ocurre porque la librería no está instalada en el entorno activo.
- Solución: Verifica que el entorno virtual esté activo (
(venv)al inicio de la línea) o que instalaste el proyecto conpipx.
2. Error de “Execution Policy” en Windows
Section titled “2. Error de “Execution Policy” en Windows”Si no puedes activar el venv, ejecuta esto en PowerShell como administrador:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser3. Conflicto de Python en Windows
Section titled “3. Conflicto de Python en Windows”Si python abre programas ajenos (Inkscape, etc.), usa siempre py en su lugar. Es el estándar moderno de Windows.
🏁 Características Finales del Proyecto
Section titled “🏁 Características Finales del Proyecto”Nuestra aplicación ahora es una herramienta CLI completa que utiliza:
- Click: Para la lógica de comandos y argumentos.
- Rich: Para la interfaz visual (TUI) con colores, tablas y elegancia.
Para ver la ayuda desde cualquier lugar:
capn --helpConclusión Final 🎉
Section titled “Conclusión Final 🎉”Has transformado un conjunto de archivos en una herramienta de software distribuible. Este es el flujo de trabajo real en la industria: Desarrollar -> Modularizar -> Proteger -> Empaquetar.
¡Felicidades, desarrollador de Qué Pasa Linux! 🐧🔥