modulefinder– 查找脚本使用的模块

源代码: Lib / modulefinder.py


这个模块提供了ModuleFinder类,可以用来确定脚本导入模块集。modulefinder.py也可以作为脚本运行,给出Python脚本的文件名作为参数,之后将打印导入模块的输出端口.

modulefinder.AddPackagePathpkg_name, path

记录名为pkg_name可以在指定的path.

modulefinder.ReplacePackageoldname, newname

中找到,指定名为oldname的模块实际上是名为newname.

class modulefinder.ModuleFinder的包(path=None, debug=0, excludes=[], replace_paths=[]

本课提供run_script()report()确定脚本导入的模块集的方法。path可以是搜索模块的目录列表;如果没有指定,则使用sys.pathdebug设定调试水平;更高的值使类打印调试消息,告诉它正在做什么。excludes是要从分析中排除的模块名称列表。replace_paths(oldpath, newpath)将在模块路径中替换的元组

report)

将报告打印到标准输出,列出由脚本导入的模块及其路径,以及缺少或似乎正在丢失的模块.

run_script (pathname )

分析pathname文件,必须包含Pythoncode.

modules

字典映射模块命名为模块。看到ModuleFinder的用法示例.

的用法示例ModuleFinder

稍后将要分析的脚本(bacon.py):

import re, itertoolstry:    import baconhameggsexcept ImportError:    passtry:    import guido.python.hamexcept ImportError:    pass

将输出bacon.py:

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