Imports an object by name. ``import_object('x')`` is equivalent to ``import x``. ``import_object('x.y.z')`` is equivalent to ``from x.y import z``. >>> import tornado.escape >>> import_object('tornado.escape') is tornado.escape True >>> import_object('tornado.escape.utf8')
(name: str)
| 123 | |
| 124 | |
| 125 | def import_object(name: str) -> Any: |
| 126 | """Imports an object by name. |
| 127 | |
| 128 | ``import_object('x')`` is equivalent to ``import x``. |
| 129 | ``import_object('x.y.z')`` is equivalent to ``from x.y import z``. |
| 130 | |
| 131 | >>> import tornado.escape |
| 132 | >>> import_object('tornado.escape') is tornado.escape |
| 133 | True |
| 134 | >>> import_object('tornado.escape.utf8') is tornado.escape.utf8 |
| 135 | True |
| 136 | >>> import_object('tornado') is tornado |
| 137 | True |
| 138 | >>> import_object('tornado.missing_module') |
| 139 | Traceback (most recent call last): |
| 140 | ... |
| 141 | ImportError: No module named missing_module |
| 142 | """ |
| 143 | if name.count(".") == 0: |
| 144 | return __import__(name) |
| 145 | |
| 146 | parts = name.split(".") |
| 147 | obj = __import__(".".join(parts[:-1]), fromlist=[parts[-1]]) |
| 148 | try: |
| 149 | return getattr(obj, parts[-1]) |
| 150 | except AttributeError: |
| 151 | raise ImportError("No module named %s" % parts[-1]) |
| 152 | |
| 153 | |
| 154 | def exec_in( |