Buenas.

Acabo de topar con un detalle que no se me ocurre como resolver. En resumen, quiero poder distinguir entre estas dos situaciones:

    1.- Excepcion ImportError porque un modulo no existe.
2.- Excepcion ImportError porque el modulo existe pero al importarlo tiene un error dentro, del tipo ImportError

Ideas?


Detalles:

Estoy haciendo un toolkit en App Engine, y tengo un paquete "call" en el que voy metiendo modulos que se encargan de responder peticiones HTTP.

Básicamente si se llama a http://...//call/hello/world, se mira a ver si existe un modulo call.hello.world, y si es asi se importa y la respuesta la da su método main().
Si hay un error en el modulo, la respuesta es el traceback.
Si no existe el modulo, se va probando hacia arriba "call.hello" y finalmente call.main() dice que no tiene respuesta para esa ruta.

Esto es un trozo de la clase que hace esto:

@route(r'/pyojo/<command:(.*)>', "call")
class Command(Request):
    def __module(self, command):
        code = None
        try:
            module = import_call(command)
            code = module.main(self)
except ImportError: pass #<---- Problema si el modulo si que existe
        except Exception:
            code = Config.log_exception(command)
        return code

Y esta es la funcion para importar, que funciona bien:

def import_call(name, module=".call"):
    name = module+"."+name
    mod = __import__(name)
    components = name.split('.')
    for comp in components[1:]:
        mod = getattr(mod, comp)
    return mod


Salud.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a