import sys
import ast
import inspect
def find_imports(module):
code = inspect.getsource(module)
tree = ast.parse(code)
imports = set()
for node in ast.walk(tree):
if isinstance(node, ast.Import):
imports.update(alias.name for alias in node.names)
elif isinstance(node, ast.ImportFrom):
imports.add(node.module)
for alias in node.names:
module_name = '{}.{}'.format(node.module, alias.name)
if module_name in sys.modules:
imports.add(module_name)
return imports
请记住,只有当模块的源代码作为普通python代码可用时,这才有效。你知道吗
以本模块为例:
from os.path import isfile
from importlib import util
import urllib.request as urlquest
import urllib.parse
import sys
您可以使用^{} module 解析模块的源代码并提取导入:
请记住,只有当模块的源代码作为普通python代码可用时,这才有效。你知道吗
以本模块为例:
这个模块的输出是
注意事项:
from module import submodule
的导入,那么"module.submodule"
将出现在输出中。但是,如果代码执行类似于from module import non_module
的导入,那么输出中只会出现"module"
。你知道吗相关问题 更多 >
编程相关推荐