#8 Cómo crear librerías en Python

hace 2 años · Actualizado hace 11 meses

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Después de cierto tiempo creando programas e implementando nuestros propios módulos, es muy probable que tengas en tus bibliotecas de código módulos de gran interés para otras personas y que quieras compartir.

Para ello, puedes compartir tu código y que las personas que lo necesite lo usen como puedan o puedes crear una librería y que se pueda instalar vía pip en cualquier ordenador.

Si estás interesado en cómo crear una librería en Python, sigue leyendo ;D

Además, si estás aprendiendo a utilizar Python, te recomiendo el siguiente curso sobre programación en python:

Entrar al curso completo de Python desde cero a experto

Puede que te interese la anterior entrada de este curso, debido a la similitud de la temática, donde te enseño a crear un módulo en Python:

Índice
  1. Librerías en Python
  2. Pasos para montar tu propia librería en Python
    1. Organiza la estructura de ficheros de manera correcta
    2. Implementa el código necesario en cada fichero
    3. Publicar la librería de Python en internet

Librerías en Python

Si estás leyendo esto, doy por hecho que sabes lo que es una librería. Pero si no lo sabes, no te preocupes que te lo explico a continuación (si ya lo sabes, puedes pasar directamente al siguiente punto).

Una librería es una empaquetación de un conjunto de funciones y operaciones que podemos utilizar en nuestro PC simplemente instalándola. Si has programado un mínimo, estoy segura de que ya has usado librerías, las más típicas son Numpy, Pandas, Os entre otras.

Pasos para montar tu propia librería en Python

A continuación te voy a explicar paso por paso como poder montar tu propia librería. En primer lugar, debes saber que tienes que organizar tus ficheros en una estructura correcta para poder crear una librería en base a tu código.

Además, hay ciertos ficheros de configuración que deben tener unas líneas de código concretas, con parámetros que pueden diferir según lo que estés implementando.

Cuando tengas la estructura montada y cada fichero con las configuraciones correspondientes, estás listo/a para publicar la librería. Ahora, te explico más detalladamente cómo lo tienes que hacer.

Organiza la estructura de ficheros de manera correcta

Lo primero que necesitas para montar una librería en Python es estructurar correctamente el código y otros ficheros.

Para ello, debes tener la siguiente estructura:

como crear librerías en Python

En nombre de la librería debería ser uno que nos permita entender el tipo de operaciones que puede contener.

Los diferentes archivos que ves en la imagen deben contener la siguiente información:

  • setup.py: En este documento se concretan las instrucciones necesarias para instalar la librería como las librerías de las que se depende y otros requisitos previos de instalación.
  • README.md: El readme es opcional, pero está recomendado hacerlo, ya que está pensado para incluir información sobre nuestra librería: como instalarla, dependencias, ejemplos de uso, etc. El formato en el que se escribe este fichero es Markdown.
  • __init__.py: Este es el fichero fundamental que estructura la librería. Gracias a la existencia de un fichero con este nombre, Python interpreta que nos encontramos ante una librería. En este archivo deberemos añadir las importaciones correspondientes del fichero (o ficheros) de funciones.
  • Funciones.py: No tiene porque llamarse funciones, pero básicamente es donde colocaremos nuestras funciones. De hecho, podemos tener tantos ficheros de funciones como queramos, sobre todo si nos ayuda a estructurar correctamente nuestro código.

Implementa el código necesario en cada fichero

Ahora que ya sabes cómo estructurar todos los ficheros y los conceptos básicos de cada uno de ellos, vamos a profundizar en qué debes poner concretamente en cada sitio.

Funciones.py

En este fichero es donde vas a incluir tu código. Si ya lo tienes implementado, perfecto. Si no, es básicamente incluir las importaciones necesarias y la/s función/es que quieras incluir en la librería.

Como te decía anteriormente, si quieres incluir más de un documento con funciones para estructurarlo de forma más cómoda, puedes hacerlo sin problemas.

__init__.py

Este fichero sirve para indicar a Python que nos encontramos ante una librería. El mero hecho de que el archivo exista es más que suficiente y puede quedarse vacío. En caso de dejarlo vacío, debemos importar nuestra librería así:

from NombreLibreria.Funciones import nombreFuncion

Sin embargo, esto es poco elegante. Si queremos que nuestra librería se pueda importar como todas las demás, es decir, así:

from NombreLibreria import nombreFuncion

Entonces debemos añadir en el fichero __init__.py, la siguiente línea:

from .Funciones import nombreFuncion

Por supuesto, si tenemos más de un fichero o más de una función debemos importar todo en este fichero, por ejemplo, si tuviéramos el fichero Funciones y el fichero Operaciones, con varias funciones dentro que queramos utilizar en la librería, el fichero __init__.py tendría las siguientes líneas:

from .Funciones import *
from .Operaciones import *

setup.py

Este documento probablemente sea el que te parezca más problemático, pero no te preocupes, aquí te dejo una plantilla para que le eches un ojo y a continuación te comento los aspectos más relevantes:

import pathlib
from setuptools import find_packages, setup

HERE = pathlib.Path(__file__).parent

VERSION = '0.0.1' 
PACKAGE_NAME = 'NombreLibreria' 
AUTHOR = 'XXXX XXXXX'
AUTHOR_EMAIL = '[email protected]'
URL = 'github url'

LICENSE = 'MIT'
DESCRIPTION = 'Aquí debes incluir una descripción corta de la librería' 
LONG_DESCRIPTION = (HERE / "README.md").read_text(encoding='utf-8')
LONG_DESC_TYPE = "text/markdown"

INSTALL_REQUIRES = [
      'listado de librerias'
      ]

setup(
    name=PACKAGE_NAME,
    version=VERSION,
    description=DESCRIPTION,
    long_description=LONG_DESCRIPTION,
    long_description_content_type=LONG_DESC_TYPE,
    author=AUTHOR,
    author_email=AUTHOR_EMAIL,
    url=URL,
    install_requires=INSTALL_REQUIRES,
    license=LICENSE,
    packages=find_packages(),
    include_package_data=True
)

Las cosas que debes tener en cuenta en este fichero son:

  • VERSION: es un parámetro que indica la versión de la librería y es necesario incrementarlo según se actualice la librería.
  • PACKAGE_NAME: debe ser el mismo nombre que has puesto en la carpeta de la librería.
  • AUTHOR, ATUHOR_EMAIL: Pon tus datos por si alguien necesita contactar contigo para preguntarte alguna duda o comentarte bugs o mejoras.
  • URL: Debes incluir la URL en la que esté disponible el código (normalment github por convención)
  • DESCRIPTION: es una descripción corta, de una o dos frases a lo sumo para especificar rápidamente qué hace la librería.
  • LONG_DESCRIPTION: Aquí incluyes el readme.md, con todas las instrucciones, tutoriales y condiciones que consideres necesarias.
  • INSTALL_REQUIRES: este campo es muy importante, ya que debes incluir las librerías de las que depende la tuya, para que se instalen las dependencias apropiadas cuando las personas se instalen tu librería.

README.md

Es un fichero en el que debes especificar todo lo que puedas la funcionalidad de tu librería para que los usuarios puedan tener una base firme sobre la que seguir una guía.

Está escrita en formato markdown, aquí te dejo una página con tutoriales para que aprendas a utilizarlo: tutoriales markdown.

Publicar la librería de Python en internet

Ahora ya tenemos todo listo, sólo nos queda publicar nuestra librería y que esté disponible para todo el mundo! Para ello, debemos seguir dos pasos: empaquetar la librería y publicarla. A continuación te cuento como.

Empaquetar la librería

Para que el mundo pueda descargarse tu librería usando el comando pip, debes empaquetarla de una manera concreta para poder subirla a PyPI. Para ello, lo que debemos hacer es ejecutar el fichero de setup.py que anteriormente hemos configurado, usando este comando:

python setup.py sdist bdist_wheel

Este comando creará una carpeta llamada dist que incluye la librería empaquetada, en el formato necesario para poder distribuirla oficialmente.

Publicar la librería

Ya estamos en la fase final, ya sólo nos queda publicar la librería en PyPI. Para poder hacerlo, necesitas tener una cuenta creada en pypi.org e instalar la librería twine, con el comando:

pip install twine

Para subir finalmente nuestra librería al repositorio final, solo necesitamos ejecutar twine sobre la librería comprimida y el documento con formato .whl que se han creado automáticamente dentro de nuestra carpeta dist.

Para ello, ejecutamos por línea de comandos:

twine upload dist/librería_comprimida dist/nombrefichero.whl

Y listo, si has seguido todos estos pasos, ya tienes tu primera librería disponible para que todo el mundo se la pueda descargar utilizando el comando:

pip install nombreLibreria
Si quieres ver más tutoriales de programación en Python, aquí te dejo disponible la página del curso de Python Gratis

Pionera del caos

Ingeniera Informática con Máster en Bioinformática, casi doctora y freelancer. Todo lo que te cuento en este blog son aprendizajes que yo misma he tenido ya sea durante mis estudios o en otros proyectos!

Otras Entradas Relacionadas

Deja una respuesta

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



Para continuar es necesario que confirmes la política de privacidad de la web.

Subir