Universidad de Costa Rica | Escuela de Ingeniería Eléctrica IE-0117 Programación Bajo Plataformas Abiertas Módulos y paquetes 1. Los módulos de Python En Python, las bibliotecas externas se organizan en módulos. Un módulo es un archivo que contiene las definiciones de funciones, clases, constantes y demás herramientas que estarán disponibles para el programador. Estos archivos pueden escribirse en Python o bien en otro lenguaje como C o C++ y luego compilarse para generar un objeto binario. 1.1. Espacios de nombres Cada módulo define un espacio de nombres (namespace) independiente. De esta forma, pueden crearse funciones o clases con cualquier nombre, sin temor a que entren en conflicto con las definiciones de otros módulos. Para acceder al espacio de nombres definido en un módulo y poder utilizar sus funciones, clases y demás definiciones, se utiliza la palabra clave import: import sys if len(sys.argv) != 3: print >>sys.stderr, "¡Error! ¡Error!" sys.exit(1) También pueden importarse funciones o clases independientes al espacio de nombres actual usando el enunciado from módulo import nombre... from sys import argv, stderr, exit if len(argv) != 3: print >>stderr, "¡Error! ¡Error!" exit(1) 1.2. Ubicación de los módulos Para que un módulo pueda ser importado por Python, debe estar ubicado en alguna ubicación reconocida por el intérprete. La lista de estas ubicaciones puede accederse usando la variable sys.path: >>> import sys >>> print sys.path ['', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', ... ] Pueden agregarse directorios a esta lista en tiempo de ejecución usando el método append(): import sys sys.path.append('/tmp') 1 IE-0117 Programación Bajo Plataformas Abiertas Módulos y paquetes También es posible indicar nuevas rutas para los módulos usando la variable de entorno $PYTHONPATH, antes de ejecutar el programa: $ export PYTHONPATH=/tmp $ ./programa_python.py 1.3. La función dir() Es posible usar la función dir() para obtener una lista de todos los nombres definidos dentro de un espacio de nombres. Esto no aplica sólamente a los módulos, sino también a objetos y clases: >>> import sys >>> print dir(sys) [...] >>> a = "Hola mundo!" >>> print dir(a) [...] >>> print dir(list) [...] 1.4. Definición de nuevos módulos Para escribir un módulo usando el lenguaje Python, sólo es necesario crear un archivo con la extensión py en el mismo directorio donde se encuentra el programa, o bien, en alguno de los directorios listados en sys.path. Cuando se importe el módulo, todo el contenido del archivo será ejecutado, haciendo que todas las funciones, clases y demás elementos definidos queden disponibles para su uso en el programa principal. 2. Paquetes Los módulos pueden organizarse de forma jerárquica, agrupándolos dentro de paquetes. Para crear un paquete lo único que debe hacerse es un directorio y colocar dentro de él los módulos que se desee agrupar. Junto con los módulos debe crearse un archivo llamado __init__.py. Este archivo le indica al sistema que el directorio es un paquete que contiene módulos dentro. El archivo __init__.py puede contener código de inicialización que se ejecutará cuando se importa el paquete, sin embargo esto no es necesario, con un archivo vacío es suficiente. 2