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)
| 106 | |
| 107 | |
| 108 | def import_object(name: str) -> Any: |
| 109 | """Imports an object by name. |
| 110 | |
| 111 | ``import_object('x')`` is equivalent to ``import x``. |
| 112 | ``import_object('x.y.z')`` is equivalent to ``from x.y import z``. |
| 113 | |
| 114 | >>> import tornado.escape |
| 115 | >>> import_object('tornado.escape') is tornado.escape |
| 116 | True |
| 117 | >>> import_object('tornado.escape.utf8') is tornado.escape.utf8 |
| 118 | True |
| 119 | >>> import_object('tornado') is tornado |
| 120 | True |
| 121 | >>> import_object('tornado.missing_module') |
| 122 | Traceback (most recent call last): |
| 123 | ... |
| 124 | ImportError: No module named missing_module |
| 125 | """ |
| 126 | if name.count(".") == 0: |
| 127 | return __import__(name) |
| 128 | |
| 129 | parts = name.split(".") |
| 130 | obj = __import__(".".join(parts[:-1]), fromlist=[parts[-1]]) |
| 131 | try: |
| 132 | return getattr(obj, parts[-1]) |
| 133 | except AttributeError: |
| 134 | raise ImportError("No module named %s" % parts[-1]) |
| 135 | |
| 136 | |
| 137 | def exec_in( |