– 查找脚本使用的模块 – 导入模块(Python教程)(参考资料)
modulefinder
– 查找脚本使用的模块
源代码: Lib / modulefinder.py
这个模块提供了ModuleFinder
类,可以用来确定脚本导入的模块集。modulefinder.py
也可以作为脚本运行,给出Python脚本的文件名作为参数,之后将打印导入模块的输出端口.
- class
modulefinder.
ModuleFinder
的包(path=None, debug=0, excludes=[], replace_paths=[]) -
本课提供
run_script()
和report()
确定脚本导入的模块集的方法。path可以是搜索模块的目录列表;如果没有指定,则使用sys.path
。debug设定调试水平;更高的值使类打印调试消息,告诉它正在做什么。excludes是要从分析中排除的模块名称列表。replace_paths是(oldpath, newpath)
将在模块路径中替换的元组report
()-
将报告打印到标准输出,列出由脚本导入的模块及其路径,以及缺少或似乎正在丢失的模块.
run_script
(pathname )-
分析pathname文件,必须包含Pythoncode.
的用法示例ModuleFinder
import re, itertoolstry: import baconhameggsexcept ImportError: passtry: import guido.python.hamexcept ImportError: pass
from modulefinder import ModuleFinderfinder = 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()))
Sample输出的报告的脚本(可能因架构而异):
Loaded modules:_types:copyreg: _inverted_registry,_slotnames,__all__sre_compile: isstring,_sre,_optimize_unicode_sre:sre_constants: REPEAT_ONE,makedict,AT_END_LINEsys:re: __module__,finditer,_expanditertools:__main__: re,itertools,baconhameggssre_parse: _PATTERNENDERS,SRE_FLAG_UNICODEarray:types: __module__,IntType,TypeType---------------------------------------------------Modules not imported:guido.python.hambaconhameggs