2017-06-04 51 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會保存行號而不是實際的源代碼。對於回溯,它會加載源代碼並顯示相應的行號。當程序運行時,源程序發生更改時,會使線路不同步。