我想检查脚本导入的所有模块是否在我实际运行脚本之前都已安装,因为脚本非常复杂并且通常运行很长时间.此外,它可能会导入不同的模块,具体取决于传递给它的选项,因此只运行一次可能无法检查所有内容.因此,我不希望在新系统上运行此脚本几个小时,因为缺少模块,因此在完成之前看到它失败了.
显然,pyflakes和pychecker在这里没有用,如果我错了,请纠正我.我可以这样做:
$ python -c "$(cat *.py|grep import|sed 's/^\s\+//g'|tr '\n' ';')"
Run Code Online (Sandbox Code Playgroud)
但它不是很强大,例如,如果单词'import'出现在一个字符串中,它就会破坏.
那么,我该如何正确完成这项任务呢?
小智 6
你可以使用ModuleFinder从标准库modulefinder 从使用示例文档
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script('bacon.py')
print 'Loaded modules:'
for name, mod in finder.modules.iteritems():
print '%s: ' % name,
print ','.join(mod.globalnames.keys()[:3])
print '-'*50
print 'Modules not imported:'
print '\n'.join(finder.badmodules.iterkeys())
Run Code Online (Sandbox Code Playgroud)