How to check if python module exists and can be im

2019-01-23 02:29发布

This question already has an answer here:

I am using debug toolbar with django and would like to add it to project if two conditions are true:

  • settings.DEBUG is True
  • module itself exists

It's not hard to do the first one

# adding django debug toolbar
if DEBUG:
    MIDDLEWARE_CLASSES += 'debug_toolbar.middleware.DebugToolbarMiddleware',
    INSTALLED_APPS += 'debug_toolbar',

But how do I check if module exists?

I have found this solution:

try:
    import debug_toolbar
except ImportError:
    pass

But since import happens somewhere else in django, I need if/else logic to check if module exists, so I can check it in settings.py

def module_exists(module_name):
    # ??????

# adding django debug toolbar
if DEBUG and module_exists('debug_toolbar'):
    MIDDLEWARE_CLASSES += 'debug_toolbar.middleware.DebugToolbarMiddleware',
    INSTALLED_APPS += 'debug_toolbar',

Is there a way to do it?

1条回答
家丑人穷心不美
2楼-- · 2019-01-23 03:09

You can use the same logic inside your function:

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

There is no performance penalty to this solution because modules are imported only once.

查看更多
登录 后发表回答