Organización del código Python#
Cuando escribimos cualquier software es muy importante cómo organizamos el código. Cada lenguaje permite realizar esta modularización de maneras diferentes. En el caso de Python, tenemos a nuestra disposición un mecanismo de paquetes y módulos que nos permite organizar nuestros ficheros de la forma que mejor nos permita reutilizar código y su mantenimiento posterior.
También es importante, de cara a organizar nuestro código, saber de qué manera se va a distribuir, ya que nos evitará tener que reorganizar nuestro código a posteriori cuando nos enfrentemos a la tarea de distribuirlo.
Módulos, paquetes y subpaquetes#
El código de un software escrito en Python estará organizado en uno o varios ficheros con definiciones de Python. Cada uno de estos archivos es un módulo. Desde cada módulo podemos importar otros módulos.
Para organizar los módulos, Python proporciona el concepto de “paquetes” y “subpaquetes”.
Un paquete Python es un directorio del sistema de archivos en el que existe
un fichero __init__.py
. Dentro del directorio puede haber uno o varios
módulos de código Python, y también otros paquetes. En este caso, se suelen
denominar subpaquetes.
La manera habitual de distribuir el código Python es la de crear un paquete que contiene todos los módulos con toda la funcionalidad asociada.
Distribución de software en Python#
El propio ecosistema de Python proporciona un comando para la instalación
de paquetes llamado pip
, lo que indica que la forma preferida de
distribución de software escrito en Python es en forma de paquetes.
Dentro de cada paquete es habitual escribir, al menos, un módulo en el que se encuentre la funcionalidad principal. Si es necesario, se puede dividir el código en varios módulos o incluso subpaquetes, pero eso dependerá en gran medida de las necesidades de cada proyecto.
Para la creación de paquetes Python se suele utilizar la librería
setuptools
, que aunque no es para de la librería estándar, se ha
convertido en un estándar de facto.
Dicha librería reutiliza algunos conceptos e ideas de la librería
distutils
, que si pertenece a la librería estándar. Entre esas ideas que
se mantienen está la de la utilización de un fichero setup.py
o un
fichero setup.cfg
para especificar la información del paquete, así como
su ubicación en el sistema de archivos, qué módulos deben incluirse o
excluirse e incluso la autgeneración de manejadores de comandos.
Todo eso y más lo veremos con más detenimiento a través del repositorio plantilla que utilizaremos para la elaboración de los entregables de la asignatura.