• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Creación de paquetes de Python

febrero 21, 2020 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

Hoy voy a iniciar una serie de entradas en las que explicaré el proceso de creación de paquetes de Python. Además de explicar diferentes opciones para su distribución, incluyendo subirlos a PyPI. La serie consta de las siguiente siete entradas:

  1. Creación de paquetes de Python
  2. Pruebas unitarias en Python
  3. Probar en múltiples versiones de Python
  4. Cobertura de las pruebas unitarias en Python
  5. Gestionar las dependencias de paquetes Python
  6. Documentar paquetes de Python
  7. Distribuir paquetes de Python

Durante las entradas crearemos un paquete de ejemplo, al que llamaremos pylane, con el que ver los diferentes pasos a seguir. Este paquete lo podéis encontrar en nuestra cuenta GitHub.

El código utilizado en esta serie se publicará en el repositorio pylane en la cuenta de GitHub de Analytics Lane.

Tabla de contenidos

  • 1 Creación de un paquete de Python
  • 2 Plantillas para Cookiecutter
  • 3 Iniciar el proyecto a partir de la plantilla
  • 4 Estructura del proyecto
    • 4.1 Subpaquetes
  • 5 Función “¡Hola Mundo!”
  • 6 Instalación y ejecución del paquete
  • 7 Conclusiones

Creación de un paquete de Python

Poder estructurar el código en paquetes es algo de gran ayuda para no solo para reutilizar el trabajo, sino que para mantener este, evolucionarlo y distribuirlo de una forma estándar. En una serie anterior hemos visto cómo distribuir el código en JavaScript, pero nunca lo habíamos tratado en Python.

Una de las mejores soluciones para la creación de paquetes en Python es Cookiecutter, ya que ofrece múltiples plantillas a partir de las cuales comenzar nuestro trabajo. Permitiendo así comenzar tener con una estructura básica sobre la que trabajar.

La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)
En Analytics Lane
La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)

Cookiecutter se distribuye como un paquete más de Python, por lo que en primer lugar será necesario instalarlo en el ordenador. Lo que haremos, como siempre, mediante el comando pip.

pip install cookiecutter

Plantillas para Cookiecutter

Una vez instalado Cookiecutter es necesario descargar una plantilla. Una de las más sencillas es “cookiecutter-pypackage-minimal”, que, tal como su nombre indica, es una plantilla mínima para creación de paquetes de Python. La plantilla se encuentra en un repositorio de GitHub que debemos clonar mediante el siguiente comando.

git clone https://github.com/kragniz/cookiecutter-pypackage-minimal.git

Al finalizar el proceso aparecerá una carpeta con el nombre cookiecutter-pypackage-minimal en la ruta donde se hubiese ejecutado el comando. La carpeta que contiene la plantilla que usara Cookiecutter para crear la estructura de nuestro paquete.

Publicidad


Iniciar el proyecto a partir de la plantilla

Para crear la plantilla de nuestro proyecto solamente tendremos que llamar a Cookiecutter indicando la plantilla que deseamos utilizar, es decir:

cookiecutter cookiecutter-pypackage-minimal

En este momento un asistente nos preguntará la información básica del proyecto como son el nombre, el autor y el repositorio donde se almacenará. Valores que son importantes, pero podremos cambiar en un futuro sin problemas.

Si no queremos descargar la plantilla, es posible indicar a Cookiecutter el repositorio para que sea él quien descargue la plantilla. Para la plantilla que estamos utilizando podemos utilizar el comando:

cookiecutter https://github.com/kragniz/cookiecutter-pypackage-minimal.git

Estructura del proyecto

Una vez finalizado el asistente se creará una carpeta con el nombre de nuestro proyecto. En nuestro caso lo hemos llamado pylane. Una carpeta que tendrá la siguiente estructura

  • pylane : carpeta en la que se encuentra todo el código de paquete, en cada caso proyecto tendrá un nombre diferente.
  • tests:  carpeta donde se encuentran las pruebas unitarias (se verá en la segunda entrega).
  • tox.ini: se utiliza junto con Pytest para pruebas de múltiples entornos (se verá en la tercera entrega).
  • LICENSE.txt: archivo de licencia para distribución del código
  • README.rst – donde se encuentra la documentación en formato rst (se verá en la sexta entrega).
  • setup.py – se utiliza para especificar los detalles del paquete (se verá en la quinta entrega).

En el interior de la carpeta con el nombre del proyecto solamente tendremos un archivo __init__.py en la que se han de incluir o importar el código del proyecto. En este momento solamente incluirá la descripción del paquete, la versión y el autor.

Subpaquetes

En el caso de que necesitemos incluir un subpaquete dentro del propio paquete se tiene que crear una carpeta con el nombre de este. Dentro de la cual se incluirá un archivo __init__.py y el resto de los archivos del subpaquete u otros subpaquetes.

Publicidad


Función “¡Hola Mundo!”

Simplemente para ver que podemos crear un paquete e instalarlo en nuestra máquina vamos a crear una función que imprima por pantalla el texto “¡Hola mundo!”. Algo que solamente es una prueba, lo que se puede hacer añadiendo el siguiente código al archivo __init__.py

def hola_mundo():<br>
    print("¡Hola mundo!")

Instalación y ejecución del paquete

Ahora podemos instalar el paquete en nuestro ordenador para probar su funcionamiento. Para lo que nos situaremos en la carpeta del proyecto e invocamos el siguiente comando pip:

pip install -e .

La opción -e indica que el paquete es editable y el punto es la ruta al proyecto. Una vez hecho esto ya podemos importar el paquete y llamar a la función que hemos creado. Lo que haremos como cualquier otro paquete descargado de PyPI, escribiendo las siguientes líneas en un archivo:

from pylane import hola_mundo

hola_mundo()

Al ejecutar este archivo deberá aparecer por pantalla el mensaje “¡Hola mundo!”.

Conclusiones

En esta primera entrega de la serie “Creación de paquetes de Python” hemos visto cómo usar Cookiecutter para crear la plantilla de nuestro proyecto y añadir una primera función de prueba. Además, hemos visto cómo instalar el paquete en desarrollo en nuestro ordenador, lo que nos permite probar el funcionamiento de este en un entorno trabajo real.

La semana que viene vamos a ver una de las partes más importantes para garantizar que el proyecto pueda evolucionar con garantías. La escritura y ejecución de pruebas unitarias.

Imagen de seth0s en Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 4 / 5. Votos emitidos: 1

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)
  • Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring
  • Cómo comparar tendencias con gráficos de líneas en Matplotlib: guía práctica paso a paso
  • Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura
  • Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales
  • Ley de Benford: cómo detectar datos manipulados con ejemplos reales
  • Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos
  • De la Regresión Logística al Scorecard: La Transformación Matemática
  • Calibración vs Discriminación en Credit Scoring: diferencias clave y cómo evaluarlas

Publicado en: Python

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Cómo comparar tendencias con gráficos de líneas en Matplotlib: guía práctica paso a paso

junio 9, 2026 Por Daniel Rodríguez

La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)

junio 4, 2026 Por Daniel Rodríguez

Calibración vs Discriminación en Credit Scoring: diferencias clave y cómo evaluarlas

junio 2, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos
  • Cerca La regresión logística publicado el julio 23, 2018 | en Ciencia de datos
  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • Creación de documentos Word con Python publicado el septiembre 7, 2020 | en Python
  • Copiar y pegar Activar copiar y pegar en VirtualBox publicado el mayo 1, 2019 | en Herramientas

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto