Módulos, Paquetes y PyPI
en Python
Qué es un módulo
Un módulo es un archivo .py con funciones
o clases reutilizables.
Ejemplo:
# [Link]
def sumar(a,b): return a+b
import matematicas
print([Link](3,4))
Formas de importar
import modulo → usa prefijo
from modulo import funcion → importa
símbolos concretos
from modulo import * → importa todo (no
recomendado)
import modulo as m → alias
Paquetes en Python
Un paquete es una carpeta con varios
módulos y un archivo __init__.py.
Estructura:
paquete/
└── __init__.py
└── [Link]
└── [Link]
Qué es PyPI
Repositorio oficial de paquetes de Python.
Web: [Link]
Comando: pip install nombre_paquete
Requisitos previos
• Python 3.8+ instalado
• Entorno virtual (recomendado)
• Archivos de configuración:
o __init__.py
o Código
o [Link]
o LICENSE
o [Link]
• Cuenta en TestPyPI y PyPI
Qué es un entorno virtual y por
qué usarlo
Un entorno virtual (venv) es una carpeta aislada con su propio
Python y librerías.
Permite tener versiones distintas de paquetes en proyectos
diferentes.
[Ejemplo] Ejemplo: proyectos con distintas versiones de
librerías
– Proyecto A → Django 3.2
– Proyecto B → Django 5.0
– Cada proyecto tiene su propio entorno
.venv con sus dependencias.
Evita conflictos entre dependencias globales.
Ideal para probar paquetes PyPI en entornos limpios.
Ventajas: aislamiento, control, reproducibilidad, limpieza.
Cómo crear y usar un entorno
virtual
1) Crear el entorno virtual en la carpeta del proyecto:
python -m venv .venv_nombre
2) Activar el entorno:
.venv\Scripts\activate
* Si el terminal no te permite ejecutar el script, da permisos con:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
3) Verás el prefijo (.venv_nombre) en la terminal.
4) Instala tus dependencias solo dentro de ese entorno.
5) Salir del entorno: deactivate
Ejemplo: tres proyectos con
entornos distintos
• C:\Proyectos\textfun\.venv → build, twine
• C:\Proyectos\test_textfun\.venv → textfun (instalado desde
TestPyPI)ç
• C:\Proyectos\otro_proyecto\.venv → dependencias propias
[Esquema] Cada proyecto con su propio entorno .venv
– Proyecto textfun → (.venv) con build, twine
– Proyecto test_textfun → (.venv) con textfun
instalado
– Otro proyecto → (.venv) con sus propias
librerías
– Al cambiar de carpeta, activa el entorno del
nuevo proyecto:
– .venv\Scripts\activate
Instalar herramientas de
empaquetado
Twine es una herramienta oficial de Python
que se utiliza para subir paquetes al
repositorio PyPI o TestPyPI de forma segura.
Permite autenticarte con tu token y transferir
los archivos generados por build sin exponer
contraseñas ni depender de configuraciones
antiguas de [Link].
pip install build twine
Nombre único y versión
• El nombre debe estar libre en
TestPyPI/PyPI
• Si el nombre ya existe, cámbialo (añade
sufijo)
• Cada subida requiere una versión nueva
(0.1.0 → 0.1.1)
[Link] ejemplo
[project]
name = "textfun"
version = "0.1.2"
description = "Librería educativa para jugar
con texto: invertir, contar vocales, alternar
mayúsculas, etc."
authors = [{name="Enrique Duque"}]
readme = "[Link]"
requires-python = ">=3.8"
Crear tu propio paquete
paquete/
└── paquete/__init__.py
└── paquete/[Link]
└── [Link]
└── [Link]
Construir:
python -m build
Construir el paquete
dist/
└─ <nombre>-[Link]
└─ <nombre>-[Link]
Comprobación:
python -m twine check dist/*
Crear token en TestPyPI
1) h ps://[Link]/ → Perfil →
Configuración de la cuenta Fichas de API
2) Token con alcance “Todos los proyectos"
3) Copiar token (pypi-...)
4) Guardarlo en lugar seguro
Subir a TestPyPI con twine
python -m twine upload --repository testpypi dist/*
Pegar el token cuando lo solicita
Nota: al pegar el token, no se muestran los caracteres.
Instalar desde TestPyPI (prueba)
pip install -i [Link] textfun
# En Python
Import textfun
# Probar funciones
Publicar en PyPI (producción)
python -m twine upload dist/*
Pegar el token cuando lo solicita
Nota: al pegar el token, no se muestran los
caracteres.
Mensaje informativo de PyPI
• This environment is not supported for trusted
publishing
→ Es un aviso normal; ignóralo si usas twine en local.
Errores comunes (1/2)
403 Forbidden:
• Token equivocado (PyPI vs TestPyPI)
• Token sin permisos ('Entire account')
• Nombre de proyecto reservado
Soluciones:
• Crear token en el sitio correcto
• Cambiar nombre en [Link]
• Subir versión nueva
Errores comunes (2/2)
400 File already exists → usa nueva versión y
reconstruye
Invalid long_description → revisa [Link] y
'twine check’
Preparar una nueva versión
• PyPI no permite subir dos veces la misma versión.
• Abre '[Link]' y actualiza el número de versión (por
ejemplo, 0.1.1 → 0.1.2).
• Elimina las carpetas dist/ y build/ si existen.
• Desde la raíz del proyecto, ejecuta:
python -m build
Subir a PyPI con Twine
• Una vez generados los archivos en dist/, sube la nueva
versión con:
python -m twine upload dist/*
• Introduce el token de PyPI.
Verificar y probar la nueva versión
• En un entorno limpio, instala la nueva versión:
pip install textfun==0.1.2
• Abre Python y verifica:
import textfun