все Python 3astпонятие
ast.Import
импорт
Узел инструкции import a, b.c as d: names — список узлов alias с полями name (полное имя через точки) и asname.
Синтаксис
ast.Import(names)
Одна инструкция с несколькими модулями даёт один Import с несколькими alias, а не несколько узлов. Имя через точку не дробится: 'import os.path' — alias(name='os.path'), хотя в пространство имён попадает только os. Импорт внутри функции или try — тот же Import, только глубже в дереве, поэтому искать импорты надо через ast.walk, а не перебором tree.body.
Примеры
import ast
imp = ast.parse('import os.path, numpy as np').body[0]
print(type(imp).__name__, [(a.name, a.asname) for a in imp.names]) # → Import [('os.path', None), ('numpy', 'np')]
import ast
src = 'import json\ndef f():\n import re\n from x import y'
mods = [a.name for n in ast.walk(ast.parse(src)) if isinstance(n, ast.Import) for a in n.names]
print(sorted(mods)) # → ['json', 're']
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности