Alex Rivera | Logout

How to check if python module exists and can be imported

Asked 2011-05-01T10:58:02.753
28

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?

Edit
Report

1 Answer

48

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.

answered 2011-05-01T11:00:11.720

Your Answer