Cómo crear una librería de Python

Crea tu librería de Python de cero y compártela con el resto del mundo. ¡Tu librería de Python podrá instalarse con un simple pip install!

Antonio Fernández Troyano
6 min readFeb 22, 2021
Photo by Fitore F on Unsplash

Si alguna vez te has planteado cómo crear una librería de Python has llegado al lugar correcto.

Pero, ¿qué es una librería en programación?

En programación, una librería es un conjunto de funcionalidades empaquetadas que permiten a los usuarios realizar nuevas tareas que inicialmente no podían llevar a cabo

En Python existen un montón de librerías que utilizamos diariamente, entre otras:

  • Numpy y Pandas para tratamiento numérico y tabular
  • Sklearn para machine learning
  • Matplotlib y Seaborn para visualización
  • Requests y bs4 para web scraping

Muchas veces el día a día nos impide darle un “second order thinking” a las cosas, como por ejemplo:

  • ¿Cómo se programaron esas librerías que tanto usamos?
  • ¿Puedo yo programar una librería?
  • ¿Cómo podría compartir mis funciones para que otras personas se beneficien de mi esfuerzo y trabajo?

Pero, ¿y si queremos crear nuestra propia librería de Python y publicarla para que todo el mundo pueda instalarla y utilizarla?

En este artículo vamos a crear una librería de python y utilizaremos una adaptación del código que programé para extraer información de ficheros PDF de la CNMV:

¡Vamos a por ello!

1. Estructura de una librería de Python

Básicamente necesitaremos crear las siguientes carpetas y ficheros:

Estructura de una librería en Python

En nuestro caso particular vamos a llamar a la librería “Leer_PDF” y vamos a crear esta estructura de carpetas y ficheros (sin código todavía):

Estructura de ficheros sin código todavía

Vamos a ver rápidamente qué debe incluir cada archivo:

  • Funciones.py : fichero que llamaremos como nos de la gana y donde se incluirán las funciones que luego pueden importarse
  • __init__.py : fichero gracias al cual Python interpreta que está delante de una librería. Puede estar en blanco, sin código
  • setup.py : instrucciones para poder instalar nuestra librería, como por ejemplo, requisitos previos de instalación de otras librerías
  • README.md : fichero en formato Markdown en el que incluiremos información sobre nuestra librería (es opcional)

2. Código de los ficheros

Vamos a empezar a escribir el código dentro de cada fichero

2.1. Funciones.py

En este archivo incluiremos todas aquellas librerías que son necesarias importar para que funcione nuestras nuevas funciones (como pandas, numpy, etc) y las propias funciones que nosotros vamos a definir.

En este ejemplo sencillo lo único que vamos a definir es una función “leer_pdf” al cual le enviaremos el path de un fichero y tratará de leer el contenido. Si no encuentra ningún error, imprimirá el resultado. En caso contrario no pasará nada.

Vemos el código:

2.2. __init__.py

Este fichero lo podemos dejar en blanco. Si lo dejamos en blanco, a la hora de utilizar nuestra función en Python deberemos invocarla así:

from Leer_PDF.Funciones import leer_pdf

No es una manera muy elegante de invocar a nuestra función. Si queremos simplificarlo simplemente incluiremos en el fichero __init__.py las siguientes líneas de código:

from .Funciones import leer_pdf

Ahora sí que cualquiera que utilice nuestra librería podrá invocar a la función de la siguiente manera:

from Leer_PDF import leer_pdf

Nota: es muy IMPORTANTE incluir la ruta relativa del fichero. En este caso, Funciones.py está en el mismo directorio que __init__.py por lo que solo tenemos que añadir un punto delante del nombre

2.3. setup.py

Quizás este sea el documento más “complejo”, pero nada del otro mundo. Una configuración básica de este fichero sería:

Los campos más importantes serían:

  • Version: según mejores tu librería y le incluyas más funcionalidades, deberás incrementar la versión
  • name: este nombre debe coincidir con el nombre de la carpeta, así se llamará tu librería. Si lo vas a subir a internet el nombre no puede estar en uso
  • install_requires: librerías necesarias para que funcione tu librería

2.4. README.md

Simplemente se trata de un documento en formato Markdown donde se debe describir para qué sirve nuestra librería, formas de utilizarlo, etc.

Un ejemplo sencillo y básico de un fichero README.md para nuestra librería “leer_pdf” podría ser:

3. Publicar nuestra librería de Python en internet

Si hemos seguido los pasos, tendremos un carpeta con los siguientes ficheros y los códigos del apartado 2.

Estructura de ficheros ahora ya con código

¿Qué es lo siguiente? publicar nuestra librería en internet para que todo el mundo pueda acceder a la misma.

3.1. Empaquetado de la librería y creación de los ficheros dist (distribution packages)

Ahora que ya tenemos todos los ficheros, tendremos que empaquetar nuestra librería para poder subirla al repositorio PyPI y que todo el mundo pueda descargarla.

Para ello primeros ejecutaremos el fichero setup.py en la consola de Linux o a través de la línea de comandos de Visual Studio Code si estás en Windows, por ejemplo:

python setup.py sdist bdist_wheel

Si todo va bien se os creará una nueva carpeta llamada “dist” que contendrá la librería empaquetada lista para su distribución

¡Librería empaquetada lista para distribuirla por internet!

3.2. Publicar librería en PyPI y PyPI test

Ahora que ya tenemos empaquetada nuestra librería solo nos quedará publicarla en algún repositorio online, como PyPI.

Antes de colgarla en abierto para todo el mundo, es conveniente realizar una primera prueba en PyPI test y cuando estemos seguros lo publicamos en PyPI.

Requisitos:

a) Primera publicación en PyPI test:

Básicamente se trata de subir los ficheros mediante twine:

twine upload --repository testpypi dist/Leer_PDF-0.0.1.tar.gz dist/Leer_PDF-0.0.1-py3-none-any.whl

Introducimos nuestro usuario y contraseña y si todo va bien…

Ejemplo de como subir una librería de python a PyPI test

Ahora podemos verificar que se ha instalado correctamente mediante Google Colab, por ejemplo:

El enlace del test pypi lo podéis sacar también de vuestra cuenta

b) Publicación definitiva en PyPI:

Si ya habéis probado en a subir vuestra librería en PyPI test y funciona, es hora de cargar vuestra librería en PyPI:

twine upload dist/Leer_PDF-0.0.1.tar.gz dist/Leer_PDF-0.0.1-py3-none-any.whl

¡Y listo!

Aquí podéis ver mi primera librería de Python publicada:

--

--

Antonio Fernández Troyano

Civil Engineer | 📈Management consultant and Master in Data Analytics and Big Data💻 | Website: www.fernandeztroyano.es | Git https://github.com/afernandez119