modulefinder —查找脚本使用的模块

源代码: Lib/modulefinder.py


该模块提供了一个ModuleFinder类,该类可用于确定脚本导入的模块集。 modulefinder.py也可以作为脚本运行,以 Python 脚本的文件名作为参数,然后将打印导入模块的报告。

ModuleFinder 的示例用法

稍后将在(bacon.py)上进行分析的脚本:

import re, itertools

try:
    import baconhameggs
except ImportError:
    pass

try:
    import guido.python.ham
except ImportError:
    pass

该脚本将输出 bacon.py 的报告:

from modulefinder import ModuleFinder

finder = ModuleFinder()
finder.run_script('bacon.py')

print('Loaded modules:')
for name, mod in finder.modules.items():
    print('%s: ' % name, end='')
    print(','.join(list(mod.globalnames.keys())[:3]))

print('-'*50)
print('Modules not imported:')
print('\n'.join(finder.badmodules.keys()))

samples 输出(可能因架构而异):

Loaded modules:
_types:
copyreg:  _inverted_registry,_slotnames,__all__
sre_compile:  isstring,_sre,_optimize_unicode
_sre:
sre_constants:  REPEAT_ONE,makedict,AT_END_LINE
sys:
re:  __module__,finditer,_expand
itertools:
__main__:  re,itertools,baconhameggs
sre_parse:  _PATTERNENDERS,SRE_FLAG_UNICODE
array:
types:  __module__,IntType,TypeType
---------------------------------------------------
Modules not imported:
guido.python.ham
baconhameggs
首页