Detener la importacion de un modulo

Jose Caballero jcaballero.hep en gmail.com
Mar Mar 17 08:26:37 CET 2009


El 17 de marzo de 2009 1:06, lasizoillo <lasizoillo en gmail.com> escribió:

> El día 17 de marzo de 2009 0:23, Jose Caballero
> <jcaballero.hep en gmail.com> escribió:
> > El 16 de marzo de 2009 23:58, lasizoillo <lasizoillo en gmail.com>
> escribió:
> >
> >> El día 16 de marzo de 2009 22:29, Oswaldo Hernández
> >> <listas en soft-com.es> escribió:
> >> > Hola,
> >> >
> >> > ¿Hay alguna forma de que cuando se importe un modulo pare la
> importacion
> >> y
> >> > vuelva al modulo que lo ha llamado?, Es decir que haga una especie de
> >> return
> >> > pero a nivel de modulo.
> >> >
> >> >
> >> > # modulo.py
> >> >
> >> > class ....
> >> >
> >> > if CondicionDeImport == False:
> >> >    # no continuar la importacion del resto del modulo
> >> >    return      # -> ERROR
> >> >
> >> > class ...
> >> > etc ..
> >>
> >> que tal algo como:
> >>
> >> class ...
> >>
> >> if CondicionDelImport:
> >>  class ...
> >>  etc ...
> >>
> >> Lo que declares deltro del if se va a declarar exactamente igual que
> >> si estuviera fuera del mismo ;-)
> >>
> >
> >
> >
> > Y eso funciona??
> > Mi pregunta es: donde se da un valor a CondicionDeImport?
>
> No tengo ni la menor idea de donde viene ese "flag". No es mi codigo.
>
> Pero hacer declaraciones condicionales es bastante normal:
> try:
>    import cmemcache as memcache
> except ImportError:
>    try:
>        import memcache
>    except ImportError:
>        raise InvalidCacheBackendError("Memcached cache backend
> requires either the 'memcache' or 'cmemcache' library")
>
> El codigo anterior necesita un cliente de memcache y prueba entre dos.
> Tambien puede ser que un modulo trate de hacer un parche a una
> determinada versión de python o de una determinada libreria. Ese
> parche se ejecutaria dentro de una condición.
>
> Los modulos son igual de dinamicos que las clases. Puedes insertarles
> funciones, atributos o clases según te apetezca. Pero si no lo haces,
> tu código será más fácil de seguir ;-)
>


Hola,

este segundo ejemplo no tiene nada que ver con el primer ejemplo que pones.
En este se importa un modulo o no, pero se importa entero. No se importa
medio modulo.
He intentado ejecutar tu primer ejemplo y no funciona porque la variable
CondicionDeImport no esta definida. De ahi mi pregunta.


Jose
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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