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