Sistema de archivos y modulos

Chema Cortes py en ls-l.org
Mie Jul 13 14:32:49 CEST 2005


Alfredo Cañadas escribió:
>        Perdona mi desconocimiento, pero no me entero de nada. ¿Quieres
> decir que cree un archivo llamado "__init.py__" que esté vacío? Quedaría
> esto:
>        Practicas
>                Primero
>                Segundo
>                        Principal
>                                Principal.py
>                                Funciones1
>                                        __init.py__
>                                        funciones1.py
>                                Funciones2
>                                        __init.py__
>                                        funciones2.py
> 

Con éso bastaría.


Pero sospecho que, tal vez, lo que quieres es no llegar a tener que
hacer paquetes, tan sólo cargar los módulos desde un lugar "arbitrario".
Para éllo hay que alterar la ruta por defecto de donde se cargan los
módulos:

  import sys
  sys.path[0:0]=["Funciones1","Funciones2"]

Cuando hay que buscar módulos, los primeros lugares donde irá será
siempre a los dos directorios que hemos insertados.


A veces, para una importación puntual, lo mejor es emplear el módulo
'imp' para así no alterar las rutas de búsqueda por defecto. Aquí te
dejo una función que haría eso mismo:


def MyImport(name, relpaths):
    import imp,os

    abspaths=[os.path.abspath(p) from p in relpaths]

    fp,pathname,description = imp.find_module(name,abspaths)
    try:
        return imp.load_module(name, fp, pathname, description)
    finally:
        if fp: fp.close()


relpaths=["Funciones1","Funciones2"]

funciones1=MyImport("funciones1", relpaths)




Más información sobre la lista de distribución Python-es