2017-06-04 48 views
1

我遇到了一个奇怪的情况,只是简单地从命令行运行一个脚本:当我遇到错误时,往往给出的回溯包含没有任何意义的代码。回溯中的每一行都应该是一个方法调用,但有时它们不是。此外,追溯中引用的行不对应给定的错误。发生了什么?作为一个例子,这里是numpy未导入一个简单的错误,但回溯变得毫无意义,指的是不相关的代码行:Python跟踪破解:代码与执行的内容不同步?

Traceback (most recent call last): 
    File "bin/train_global_model.py", line 549, in <module> 
    if __name__ == '__main__': 
    File "bin/train_global_model.py", line 236, in main 
    def main(): 
    File "bin/train_global_model.py", line 407, in do_training 
    tb_writer=train_writer, 
    File "bin/train_global_model.py", line 200, in run_iteration 
    print(accuracy) 
NameError: global name 'np' is not defined 

要特别注意引用的代码行。

python缓存代码是在某处执行但在跟踪异常时引用实际文件?运行Python 2.7.13。

+1

无法诊断我们无法重现的内容。发布[mcve]。 –

+0

我会,但我不能。它似乎并不是导致问题的代码本身。为了找出原因,我希望能找到一些帮助。 –

+1

检查本地目录中的* .py文件是否与另一个python库重复。我通过创建一个名为abc.py的文件被多次发现 –

回答

2

在运行程序时,Python会保存行号而不是实际的源代码。对于回溯,它会加载源代码并显示相应的行号。当程序运行时,源程序发生更改时,会使线路不同步。