Coverage.py执行tensorflow.keras.Model.fit时提示‘No source for code’错误如何解决?
解决coverage报告因TensorFlow Autograph临时文件报错的问题
当测试用例中调用tensorflow.keras.Model.fit时,TensorFlow的Autograph机制会动态生成临时Python文件(如__autograph_generated_filexxxxxx.py),coverage工具会尝试追踪这些临时文件,但在生成报告阶段这些文件可能已被清理或无法访问,从而触发No source for code报错。以下是几种可行的解决方法:
通过配置文件忽略临时文件
在项目根目录创建或修改.coveragerc配置文件,添加路径排除规则,让coverage跳过对Autograph临时文件的统计:[run] omit = */Temp/*/__autograph_generated_file*.py */AppData/Local/Temp/*/__autograph_generated_file*.py命令行参数直接排除
执行coverage run时,通过--omit参数指定要忽略的临时文件路径:coverage run --omit="*/Temp/*/__autograph_generated_file*.py,*/AppData/Local/Temp/*/__autograph_generated_file*.py" 你的测试脚本路径.py禁用Autograph(不推荐)
如果不需要Autograph的代码优化能力,可以在代码中禁用它,避免生成临时文件:import tensorflow as tf # 全局禁用Autograph tf.autograph.set_verbosity(0) # 或仅针对训练函数禁用 @tf.autograph.experimental.do_not_convert def run_training(model, x_data, y_data): model.fit(x_data, y_data)注意:这种方法可能降低模型训练的执行效率,仅在必要时使用。
内容的提问来源于stack exchange,提问作者Code Pope
相关产品推荐
相关产品推荐

