Python: Paquetes
Un paquete (Package) es una carpeta conteniendo módulos y/u otros paquetes que a su vez pueden contender módulos y/u otros paquetes. La estructura básica de un paquete es:
padre/ __init__.py modulo1.py uno/ __init__.py modulo3.py dos/ __init__.py tres/ __init__.py
Aquí tenemos un paquete llamada padre que contiene un módulo llamada modulo1 y tres paquetes hijos llamados uno, dos y tres, que además el paquete uno tiene un módulo llamado módulo3.
Por defecto cuando utilizamos un paquete éste debe estar en el mismo directorio que el programa que lo llama o en un directorio que contenta sys.path
o si no podemos distribuir el paquete (ver distribución de paquetes).
Para poder usar las funciones y/o clases de los módulos contenidos en un paquete en nuestro programa debemos importarlo import
de las siguiente manera:
# paquete:
# nuestro_paquete/
# __ini__.py <-- fichero vacío
# nuestro_modulo.py
# fichero: nuestro_modulo.py
def nuestra_funcion():
print("Hola Mundo")
# fichero: nuestro_programa.py
from nuestro_paquete.nuestro_modulo import nuestra_funcion
nuestra_funcion()
# ejecutamos
python3 nuestro_programa.py
Hola Mundo
Para distribuir un paquete y hacerlo instalable debemos crear un fichero llamado setup.py
fuera de la carpeta del paquete (en el ejemplo de arriba fuera de padre/
) para que estén al mismo nivel.
Este fichero debe contener la siguiente información (de momento la básica):
from setuptools import setup setup( name="padre", version="0.1", description="Este es un paquete de ejemplo", author="Iñaki Martínez", author_email="mi@correo.es", url="http://www.imd.guru", packages=["padre","padre.uno","padre.dos","padre.tres"], scripts=[] )
Aunque la mayoría de las líneas son auto explicativas, lo que es muy importante es packages
que es una lista que primero debe ser el nombre del paquete y después cada uno de los subpaquetes que están incluidos.
Una vez que tengamos la carpeta del paquete y el fichero setup.py
, nos situamos en un terminal en el mismo directorio y ejecutamos:
python setup.py sdist
Si todo ha funcionado correctamente, se habrá creado una nueva carpeta llamada dist
con un fichero (.zip o .tar.gz dependiendo el S.O.) que es nuestro fichero distribuible y que es el que podemos compartir con todo el mundo para que puedan instalar nuestro paquete.
Para instalar un paquete en Python desde el directorio donde tenemos el paquete comprimido:
pip install padre-0.1.zip
Para desinstalar el paquete en Python:
pip uninstall padre
Más información en: paquetes