Tengo un módulo que importa un módulo, pero en algunos casos el módulo que se está importando puede no existir. Después de importar el módulo, hay una clase que hereda de una clase el módulo importado. Si tuviera que atrapar la excepción ImportError
en el caso de que el módulo no exista, ¿cómo puedo evitar que Python analice el resto del módulo? Estoy abierto a otras soluciones si eso no es posible.¿Cómo salir de un módulo antes de que haya terminado de analizar?
Aquí es un ejemplo básico (selfaware.py):
try:
from skynet import SkyNet
except ImportError:
class SelfAwareSkyNet():
pass
exit_module_parsing_here()
class SelfAwareSkyNet(SkyNet):
pass
La única manera que se me ocurre hacer esto es:
- Antes de importar el módulo
selfaware.py
, comprobar si el móduloskynet
está disponible, y simplemente pase o cree una clase de código auxiliar. Esto causará DRY siselfaware.py
se importa varias veces. Dentro de
selfaware.py
tienen la clase definida dentro del bloquetry
. ej .:try: from skynet import SkyNet class SelfAwareSkyNet(SkyNet): pass except ImportError: class SelfAwareSkyNet(): pass
¿Qué pasa con su solución? ¿No funciona? ¿Recibe un error? –
¿Hay un eco aquí? ¿Qué pasa con todas las respuestas duplicadas exactas? ¿Y por qué los dos duplicados más nuevos tienen puntajes más altos que los anteriores? –
@MuMind Supongo que no noté que la respuesta de Hyperboreean fue editada después de que fuera inicialmente incorrecta. He vuelto a aceptar la respuesta. –