1 """Backport of importlib.import_module from 3.x."""
4 def _resolve_name(name
, package
, level
):
5 """Return the absolute name of the module to be imported."""
8 if package
.count('.') < level
:
9 raise ValueError("attempted relative import beyond top-level "
11 except AttributeError:
12 raise ValueError("__package__ not set to a string")
13 base
= package
.rsplit('.', level
)[0]
15 return "{0}.{1}".format(base
, name
)
20 def import_module(name
, package
=None):
23 The 'package' argument is required when performing a relative import. It
24 specifies the package to use as the anchor point from which to resolve the
25 relative import to an absolute import.
28 if name
.startswith('.'):
30 raise TypeError("relative imports require the 'package' argument")
32 for character
in name
:
36 name
= _resolve_name(name
[level
:], package
, level
)
38 return sys
.modules
[name
]