Как проверить, существует ли модуль python и может быть импортирован

Я использую панель инструментов отладки с django и хотел бы добавить ее в проект, если выполняются два условия:

  • settings.DEBUG True
  • сам модуль существует

Нетрудно сделать первый

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

Но как проверить, существует ли модуль?

Я нашел это решение:

try:
    import debug_toolbar
except ImportError:
    pass

Но поскольку импорт происходит где-то еще в django, мне нужно, если /else логику, чтобы проверить, существует ли модуль, поэтому я могу проверить его в 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',

Есть ли способ сделать это?

Ответ 1

В своей функции вы можете использовать одну и ту же логику:

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

В этом решении нет штрафа за производительность, потому что модули импортируются только один раз.