Ir al contenido

Python/Su primer programa en Python/La ruta de búsqueda de import

De Wikilibros, la colección de libros de texto de contenido libre.


Índice de la sección
«Su primer programa en Python»



Antes de continuar, quiero mencionar brevemente la ruta de búsqueda de bibliotecas. Python busca en varios sitios cuando intenta importar un módulo. Específicamente, busca en todos los directorios definidos en sys.path. Esto es simplemente una lista, y puede verla y/o modificarla fácilmente con los métodos estándar de una lista (conocerá las listas más adelante, en este capítulo).

Ejemplo 2.4. Ruta de búsqueda de import

>>> import sys                                                                                  [1]
>>> sys.path                                                                                    [2]
['', '/usr/local/lib/python2.2', '/usr/local/lib/python2.2/plat-linux2', 
'/usr/local/lib/python2.2/lib-dynload', '/usr/local/lib/python2.2/site-packages', 
'/usr/local/lib/python2.2/site-packages/PIL', '/usr/local/lib/python2.2/site-packages/piddle']
>>> sys                                                                                         [3]
<module 'sys' (built-in)>
>>> sys.path.append('/mi/nueva/ruta')                                                           [4]

[1] Importar el módulo sys deja disponibles todas sus funciones y atributos.

[2] sys.path es una lista de nombres de directorios que constituye la ruta de búsqueda actual (la suya puede ser diferente, dependiendo del sistema operativo, qué versión de Python esté ejecutando, y dónde la instaló originalmente). Python buscará en estos directorios (y en ese orden) un fichero .py que corresponda al nombre del módulo que intenta importar.

[3] En realidad mentí; la verdad es más complicada que eso, porque no todos los módulos se instalan como ficheros .py. Algunos, como el módulo sys, son «módulos incorporados» ("built-in"); y están dentro del propio Python. Los módulos built-in se comportan exactamente como los normales pero no dispone de su código fuente en Python, ¡porque no se escriben usando Python! (el módulo sys está escrito en C.)

[4] Puede añadir un nuevo directorio a la ruta de búsqueda de Python en tiempo de ejecución agregando el nombre del directorio a sys.path, y entonces Python buscará en ese directorio también cada vez que intente importar un módulo. El efecto dura tanto como esté en ejecución Python. (Hablaremos más sobre append y otros métodos de listas en el Capítulo 3)