Use importlib instead of __import__ and eval (#2043)

This commit is contained in:
Masashi SHIBATA 2019-05-23 04:07:02 +09:00 committed by Berker Peksag
parent b12d364095
commit 3701ad9f26

View File

@ -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))