Pythonic方式来处理导入错误

时间:2014-12-28 17:51:49

标签: python import python-import

我在项目中使用自定义日志记录模块。如果它不可用,我想用假人替换它而不是提出ImportError

以下是目前执行该操作的代码:

try:
    import logger
except ImportError:
    print 'Couldn\'t load logger'

    class DummyLogger(object):
        def __init__(self):
            pass
        def log(self, image):
            pass

    logger = DummyLogger()

我不认为这是一个优雅的解决方案。它确实有效,但它并不好。还有更好的方法吗?

2 个答案:

答案 0 :(得分:6)

我会将虚拟实现放入一个名为dummy_loggger的单独模块中,并写入:

try:
    import logger
except ImportError:
    import dummy_logger as logger

我以前使用JSON解析器完成了这项工作:

try:
    import ujson as json  # very fast but might not be available in some cases
except ImportError:
    import json

答案 1 :(得分:0)

你可以很容易地使它更简洁:

try:
    import logger
except ImportError:
    print 'Couldn\'t load logger'

    class logger(object):
        @classmethod
        def log(cls, image):
            pass

请注意,即使在您当前的版本中,也应删除空的__init__ - 它不会添加任何值。