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