python - 导入可选模块

标签 python module option-type

这是我的文件结构:

[mylibrary]
    __init__.py 

    [codecs]
        __init__.py < this is the file that we're talking about
        optional.py

现在我在标记的 __init__.py 中有了这段代码:

def load_optional_codecs():
    try:
        from mylibrary.codecs import optional
        # do stuff with optional
    except ImportError:
        pass

这有一个问题。如果 optional 模块本身包含导入异常,它将静默失败。有没有一种方法可以导入可选模块而不消除模块中的任何异常?


这似乎是一个晦涩的场景,但由于沉默的异常,我遇到了一个严重的错误,我想防止这种情况在未来发生。

最佳答案

这有点 hacky,但您可以检查有关异常的消息以确定失败的原因:

try:
    from mylibrary.codecs import optional
except ImportError, e:
    if e.message != 'No module named optional':
        raise

使用这段代码,如果导入可选模块失败,它将被忽略,但如果有任何其他引发异常(导入另一个模块、语法错误等),它将被引发。

关于python - 导入可选模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881753/

相关文章:

Python 重定向并仅显示 pyQt Widget 中的最后一行

python - "Got KeyError when attempting to get a value for field ` 用户名 ` on serializer ` UserCreateSerializer`

java - JSON 库返回 Java8 选项?

ios - 在 Swift 中,我应该在完成后将可选实例变量设置为 nil 吗?

python - 在提交时使用 git 自动更新版本

python - Django: django.db.utils.InternalError: (1046, u'未选择数据库')

node.js - 在安装 npm 模块之前是否需要有 package.json 文件?

function - 如何从与其定义的模块不同的模块调用 puppet 函数

php - heroku 上的 Imagick - 这可能吗?

java - 可选同时类型转换