当前位置:  开发笔记 > 编程语言 > 正文

尝试从多个位置导入模块的更简洁的方法?

如何解决《尝试从多个位置导入模块的更简洁的方法?》经验,为你挑选了1个好方法。

有没有办法整理下面的代码,而不是一系列嵌套的try/except语句?

try:
    import simplejson as json
except ImportError:
    try:
        import json
    except ImportError:
        try:
            from django.utils import simplejson as json
        except:
            raise "Requires either simplejson, Python 2.6 or django.utils!"

Soviut.. 7

我在http://mail.python.org/pipermail/python-list/2007-May/441896.html找到了以下功能.它似乎工作得很好,我很确定它的导入方式不会踩到你可能已有的任何现有导入.

def module_exists(module_name):
    try:
        mod = __import__(module_name)
    except ImportError:
        return False
    else:
        return True

if module_exists('simplejson'):
    import simplejson as json
elif module_exists('json'):
    import json
elif module_exists('django.utils'):
    from django.utils import simplejson as json
else:
    raise ImportError('Requires either simplejson, Python 2.6 or django.utils')

我知道这看起来像是更多的代码,但是如果你做了很多这样的话,这个函数可以在其他地方重用.



1> Soviut..:

我在http://mail.python.org/pipermail/python-list/2007-May/441896.html找到了以下功能.它似乎工作得很好,我很确定它的导入方式不会踩到你可能已有的任何现有导入.

def module_exists(module_name):
    try:
        mod = __import__(module_name)
    except ImportError:
        return False
    else:
        return True

if module_exists('simplejson'):
    import simplejson as json
elif module_exists('json'):
    import json
elif module_exists('django.utils'):
    from django.utils import simplejson as json
else:
    raise ImportError('Requires either simplejson, Python 2.6 or django.utils')

我知道这看起来像是更多的代码,但是如果你做了很多这样的话,这个函数可以在其他地方重用.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有