使用compile_dir编译python文件目录时如何检测错误?
目前我在stderr上获得了一些东西,但无法在我的应用中检测到它。 py_compile.compile()接受'doraise'参数,但这里没有。
或者有更好的方法从python脚本执行此操作吗?
编辑:
我用os.walk修复它并为每个文件调用py_compile.compile。但问题仍然存在。
答案 0 :(得分:2)
我没有看到更好的方法。该代码旨在支持命令行程序,而API似乎并不完全适合用作库。
如果你真的不得不使用compileall那么你可以用这个hack来伪装它,这注意到在catch异常处理程序中测试了“quiet”是否为boolean-ness。我可以用非零覆盖它,检查异常状态以查看它是否来自py_compile(quiet在其他上下文中测试)并对该信息执行某些操作:
import sys
import py_compile
import compileall
class ReportProblem:
def __nonzero__(self):
type, value, traceback = sys.exc_info()
if type is not None and issubclass(type, py_compile.PyCompileError):
print "Problem with", repr(value)
raise type, value, traceback
return 1
report_problem = ReportProblem()
compileall.compile_dir(".", quiet=report_problem)
Förresten,det finnsGothPypåförstamåndagenvarjemånad,om du skulletasällskapmedandra Python-användareiGbg。
答案 1 :(得分:0)
对我来说很好。可能是因为你没有以某种方式将doraise
设置为True
吗?