Ésta es mi estructura de archivos:Importación de un módulo opcional
[mylibrary]
__init__.py
[codecs]
__init__.py < this is the file that we're talking about
optional.py
Ahora tengo este código en el marcado __init__.py
:
def load_optional_codecs():
try:
from mylibrary.codecs import optional
# do stuff with optional
except ImportError:
pass
Hay un problema con esto. Si el módulo optional
contiene una excepción de importación en sí, fallará en silencio. ¿Hay alguna forma de importar un módulo opcional sin silenciar ninguna excepción del módulo?
Esto puede parecer un escenario oscuro, pero he conseguido un error desagradable debido a la excepción silenciado y me gustaría evitar que esto ocurra en el futuro.
Puede informar la excepción al usuario o registrarla en lugar de 'pass' en el bloque' except', pero si el error de importación presenta errores desagradables, diría que es casi seguro que no es "opcional". – geoffspear
@Wooble: no, el 'from mylibrary.codecs import optional' no falló. El problema fue que el módulo 'opcional 'importó un módulo que falló (debido a un error de programación), pero ese error se silenció. – orlp