orl*_*rlp 7 python module optional
这是我的文件结构:
[mylibrary]
__init__.py
[codecs]
__init__.py < this is the file that we're talking about
optional.py
Run Code Online (Sandbox Code Playgroud)
现在我在标记的代码中有这个代码__init__.py:
def load_optional_codecs():
try:
from mylibrary.codecs import optional
# do stuff with optional
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
这有一个问题.如果optional模块本身包含导入异常,它将无声地失败.有没有办法导入可选模块而不会从模块中消除任何异常?
这可能看起来像一个模糊的场景,但由于沉默的异常我得到了一个令人讨厌的错误,我想防止将来发生这种情况.
这有点hacky,但您可以检查异常上的消息以确定失败的内容:
try:
from mylibrary.codecs import optional
except ImportError, e:
if e.message != 'No module named optional':
raise
Run Code Online (Sandbox Code Playgroud)
使用此代码,如果导入可选模块失败,它将被忽略,但如果有任何其他引发异常(导入另一个模块,语法错误等),它将被引发.