Skip to content

Python de Cero a Pro - Cap. 21 - Empaquetado y Distribución con pipx

Este es el módulo final de nuestra práctica secuencial.

  1. Módulo de Persistencia JSON 🗄️
  2. Módulo de Procesamiento de Fechas 🗓️
  3. Módulo de Seguridad y Ofuscación 🛡️
  4. Arquitectura de Modelos de Datos 🧩
  5. Interfaz de Usuario TUI Profesional 🎮
  6. Integración CLI y Lanzador Principal 🚀
  7. 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í:

Terminal window
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.

pyproject.toml
[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)”
Terminal window
# Crear el entorno
python -m venv venv
# Activar el entorno
.\venv\Scripts\Activate.ps1
# Instalar dependencias locales
pip install -r requirements.txt

Opció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.

  1. Instalar pipx (Usa el lanzador py para evitar conflictos):
    Terminal window
    py -m pip install pipx
    py -m pipx ensurepath
  2. Reiniciar terminal (Cierra y abre de nuevo PowerShell).
  3. Instalar el proyecto:
    Terminal window
    py -m pipx install . --editable
    Nota: --editable permite 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)”
Terminal window
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Paso 2: Instalación Global en Fedora / RHEL

Section titled “Paso 2: Instalación Global en Fedora / RHEL”
  1. Instalar pipx:
    Terminal window
    sudo dnf install pipx -y
    pipx ensurepath
  2. Instalar el proyecto:
    Terminal window
    pipx install . --editable

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 con pipx.

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:

Terminal window
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

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:

Terminal window
capn --help

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! 🐧🔥