まず結論

Traceback が出たら、最初は全部を読もうとしなくて大丈夫です。

まず見る場所は、次の3つです。

最後の行: エラー名と理由
line番号: 何行目で止まったか
コード行: その行に何が書いてあるか

ここだけ分かると、エラーがかなり追いやすくなります。

こんなときに読む記事です

次のような表示で止まった人向けです。

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    print(name)
NameError: name 'name' is not defined

英語が多くて怖く見えますが、読む場所を絞れば大丈夫です。

絵で見るなら

Tracebackは、エラーまでの道順を書いた地図のようなものです。

モコが地図の下から見て、まず最後の赤い札を確認します。

最後の札には、NameError のようなエラー名が書いてあります。
その上には、何行目で止まったかの案内があります。

最後の行を見る

まずは、いちばん下の行を見ます。

NameError: name 'name' is not defined

この行には、エラー名と理由が書かれています。

この例では、NameError がエラー名です。
name 'name' is not defined が理由です。

line番号を見る

次に、line と書かれた場所を探します。

File "main.py", line 3, in <module>

この例では、line 3 なので3行目で止まっています。

まずはファイル名よりも、行番号を見ると直しやすいです。

その下のコード行を見る

行番号の下には、止まったコードが出ることがあります。

print(name)

この行で name を使おうとして、Pythonが名前を見つけられなかったと読めます。

エラー名、行番号、コード行を並べて見ると、原因の候補がかなり絞れます。

長いTracebackのとき

Tracebackが何行も続くことがあります。

最初から全部を理解しようとすると大変です。
完全初心者のうちは、まず最後の行を見ます。

エラー名は何?
どのlineで止まった?
その行には何がある?

この3つだけで、検索する言葉も決めやすくなります。

読み方のコツ

Tracebackを見たら、次の順で確認します。

1. 最後の行のエラー名を見る
2. line番号を見る
3. 表示されたコード行を見る

NameErrorSyntaxErrorFileNotFoundError のようなエラー名が分かれば、個別の記事で原因を確認できます。

手を動かすミニ練習

次のコードを動かして、Tracebackの最後の行を見てみましょう。

print(name)

NameError が出たら、最後の行、line番号、コード行の3つを探してみてください。