如何在Python文件中查找本地导入?(使用modulegraph)

1 投票
2 回答
572 浏览
提问于 2025-04-17 17:39

有没有办法获取一个Python脚本中仅仅被本地模块(脚本)导入的列表呢?

我的意思是,我有两个文件,一个是被扫描的文件,另一个是扫描器。我需要确定被扫描的文件使用了哪些本地模块(可能可以用modulegraph或modulefinder),但我自己找不到答案。

编辑:其实我需要在不导入被扫描模块的情况下来完成这个,所以就像是一种文件扫描的方式。

2 个回答

0

因为Python比C或Java更灵活,所以如果你无法导入或运行扫描到的模块,就会出现问题。想象一下这样的代码:

re = __import__('re')
mymodule = __import__(raw_input()) # even worse for you

根据你对扫描到的模块了解得有多深,进行文本搜索可能会顺利,也可能会遇到麻烦。

0

我通过筛选另一个模块中的所有对象,来检查它们是否属于模块类型。
这样做效率不是特别高,但我觉得也没必要太高效。

import foo # your module

import types
print dict((k, v) for (k, v) in foo.__dict__.iteritems() if type(v)==types.ModuleType)

撰写回答