From 3701ad9f26a7a4c0a081dfd0f6e97ecb272de515 Mon Sep 17 00:00:00 2001 From: Masashi SHIBATA Date: Thu, 23 May 2019 04:07:02 +0900 Subject: [PATCH] Use importlib instead of __import__ and eval (#2043) --- gunicorn/util.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gunicorn/util.py b/gunicorn/util.py index d5d1fcfd..cea69794 100644 --- a/gunicorn/util.py +++ b/gunicorn/util.py @@ -7,6 +7,7 @@ import email.utils import errno import fcntl import html +import importlib import inspect import io import logging @@ -364,19 +365,17 @@ def import_app(module): module, obj = parts[0], parts[1] try: - __import__(module) + mod = importlib.import_module(module) except ImportError: if module.endswith(".py") and os.path.exists(module): msg = "Failed to find application, did you mean '%s:%s'?" raise ImportError(msg % (module.rsplit(".", 1)[0], obj)) raise - mod = sys.modules[module] - is_debug = logging.root.level == logging.DEBUG try: - app = eval(obj, vars(mod)) - except NameError: + app = getattr(mod, obj) + except AttributeError: if is_debug: traceback.print_exception(*sys.exc_info()) raise AppImportError("Failed to find application object %r in %r" % (obj, module))