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
Importante
Mejorar esta sección y poner un ejemplo real..

Más información en: paquetes

Retro

Lugares

Redes

Sistemas

Varios