1

我想在实际运行脚本之前检查是否安装了脚本导入的所有模块,因为脚本非常复杂并且通常运行多个小时。此外,它可能会根据传递给它的选项导入不同的模块,因此仅运行一次可能无法检查所有内容。所以,我不想在新系统上运行这个脚本几个小时,只是因为缺少模块而看到它在完成之前失败。

显然,pyflakes 和 pychecker 在这里没有帮助,如果我错了,请纠正我。我可以做这样的事情:

$ python -c "$(cat *.py|grep import|sed 's/^\s\+//g'|tr '\n' ';')"

但它不是很健壮,例如,如果“import”这个词出现在一个字符串中,它就会中断。

那么,我怎样才能正确地完成这项任务呢?

4

2 回答 2

7

您可以使用标准库模块查找器中的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())
于 2013-03-04T11:52:46.640 回答
0

您可以编写一个test.py仅包含所有可能导入的内容,例如:

import these
import are
import some
import modules

运行它,如果有任何问题 python 会让你知道

于 2013-03-04T11:41:01.883 回答