Pythonの英語エラーメッセージは、最初から全部を訳す必要はありません。まず最後の行にあるエラーの種類と説明を読み、次にファイル名・行番号から自分のコードへ戻りましょう。「何が起きたか」と「どこを調べるか」を分けると、長い英文に見える表示も追いやすくなります。
この記事では、6種類のエラーを短いコードで実際に発生させ、英語の意味、最初に確認する場所、直し方の考え方を対応させます。2026年10月5日にmacOS・Python 3.9.6で確認した練習例です。Pythonのバージョンによって、矢印や補足説明などの表示が変わる場合があります。
この記事でわかること
- 種類:NameError、TypeErrorなど、何の問題か。
- 詳細:変数名、型、値、ファイル名のどれが示されているか。
- 場所:自分のファイルと該当行はどこか。
- 仮説:何を1つ変えれば確かめられるか。
- 再実行:エラーが消え、欲しい結果になったか。
Pythonのエラーメッセージを読む基本の順番

実行中の例外では、Traceback (most recent call last):に続いて、処理がたどった場所が表示されることがあります。最後の行には、例外の種類と詳しい説明が出ます。Python公式チュートリアルのエラーと例外の説明でも、この読み方と、構文エラー・実行中の例外の違いを確認できます。
たとえば、次の2行を実行してみてください。最初の変数名は単数形のminute、表示しようとしているのは複数形のminutesです。
minute = 30
print(minutes)
確認した環境では、最後の行が次のようになりました。
NameError: name 'minutes' is not defined
読解の中心は、NameError、'minutes'、not definedの3つです。「minutesという名前が定義されていない」と読めます。まずスペルと、その変数に値を入れた行を見ます。今回なら、print(minute)にそろえるか、定義側をminutes = 30にそろえます。
長いTracebackにライブラリ内部の行が混じっていても、全部を変更しようとしないでください。自分のプロジェクトのファイル名と、そこから何を呼び出したかを探します。複数の例外が連続して表示されている場合は、最後の1行だけで原因を決めず、直前の例外とのつながりも読みます。
よく出る英単語を、確認する場所へ結び付ける
| 英語の手がかり | 大まかな意味と見る場所 |
|---|---|
| not defined | 定義されていない。変数名の綴り、定義する順番、使える範囲を見る |
| unsupported | その組み合わせに対応していない。演算に使う値や型を見る |
| invalid | 有効ではない。渡した値・形式と、処理が求める形式を比べる |
| No such file or directory | 指定したファイルや場所が見つからない。名前とパス、実行場所を見る |
| key | 辞書で値を探す名前。実際のキーと取り出すキーを比べる |
| syntax | 文法・構文。コロン、括弧、引用符、直前の行を見る |
これは原因を決めつけるための表ではなく、調べる範囲を絞るための表です。同じNameErrorでも、単純な誤字のほか、関数の内側で作った変数を外側から使おうとしている場合などがあります。
よくあるエラーを、確認する場所と結び付ける

実例1:TypeErrorは、値の種類を確認する
total = 30 + "15"
print(total)
このコードの最後のエラー行は、次のとおりです。
TypeError: unsupported operand type(s) for +: 'int' and 'str'
operandは、演算の対象になる値を指します。ここでは、+の左右がint(整数)とstr(文字列)なので、そのまま足せないと説明しています。
合計45を求めたいなら、文字列の「15」を整数にします。
total = 30 + int("15")
print(total) # 45
一方、「3015」という文字列を作りたいなら、左右を文字列にそろえる考え方になります。エラーを消す方法と、欲しかった結果を出す方法は同じとは限りません。先に数値の足し算なのか、文字をつなげたいのかを確認します。
実例2:ValueErrorは、値の中身を確認する
minutes = int("30分")
print(minutes)
ValueError: invalid literal for int() with base 10: '30分'
literalは、ここでは変換しようとした表記の手がかりです。int()で10進数の整数に変えようとしましたが、'30分'には単位が混ざっています。
教材としてint("30")に変えれば整数にできます。ただし、実際のフォームなら、入力欄に数字だけを入れる仕様にするか、「分」を含む入力も受け入れて整える仕様にするかを決める必要があります。何でも文字を削って数値にすればよいわけではありません。
空欄、全角数字、負数、単位付きなどを扱う練習は、PythonのCSV集計実習でも試せます。形式を確かめてから集計へ進む流れを学べます。
実例3:KeyErrorは、辞書の項目名を確認する
record = {"category": "Python"}
print(record["subject"])
KeyError: 'subject'
recordに入っているキーはcategoryですが、取り出そうとしているのはsubjectです。どちらを使う設計なのかを確かめ、データを作る側と使う側で名前をそろえます。
単にrecord.get("subject")へ変えると、キーがなくても例外を出さずにNoneを返せます。しかし、必須の科目が欠けている問題まで解決したわけではありません。必須項目なら入力を止めて案内し、省略できる項目なら既定値を決める、と用途に応じて考えます。
実例4:FileNotFoundErrorは、ファイル名と実行場所を見る
次の例では、作業フォルダーに存在しないファイル名を指定しています。
with open("missing-study-log.csv") as f:
print(f.read())
FileNotFoundError: [Errno 2] No such file or directory: 'missing-study-log.csv'
No such file or directoryは「そのファイルやディレクトリがない」という手がかりです。最初に、次の順で確認してください。
- ファイル名と拡張子は合っているか。CSVだと思っていても、実際は別の名前ではないか。
- ファイルを置いたフォルダーはどこか。
- Pythonをどの作業フォルダーから実行しているか。
- 相対パスが、その作業フォルダーから見た場所になっているか。
相対パスの基準は、通常、Pythonを実行している現在の作業ディレクトリです。スクリプトファイルがある場所と常に一致するとは限りません。状況を確かめるには、次のように実行場所を表示できます。
from pathlib import Path
print(Path.cwd())
エラーを消すためだけに空のファイルを作ると、集計対象のデータがないまま処理が進むことがあります。本来読むはずのファイルを見つけ、正しいパスを指定することが先です。
実例5:SyntaxErrorは、示された場所の直前も見る
if True
print("ready")
Python 3.9.6では、SyntaxError: invalid syntaxになりました。この例ではif Trueの末尾のコロンがありません。
if True:
print("ready")
構文エラーの矢印は、文法として読み進められなくなった場所を示します。必ずしも、その文字自体だけを変えれば直るとは限りません。直前の括弧の閉じ忘れ、引用符の閉じ忘れ、コロンの欠落も見てください。
新しいバージョンでは、より具体的な補足が出る場合があります。記事の表示と一字一句同じでなくても、エラーの種類、指された行、前後のコードを合わせて読みます。
AIや講師に英語で質問するときの例文

質問には、やりたいこと、最小限のコード、エラー原文、確認したことを入れます。長いプログラム全部を貼る前に、問題が起きる小さな範囲へ絞ると説明しやすくなります。
I am trying to add two study-time values.
I expected the result to be 45.
This code raises a TypeError:
total = 30 + "15"
The last line of the error is:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
I checked that 30 is an integer and "15" is a string.
Should I convert the second value to an integer before adding it?
「学習時間を足して45にしたい。整数と文字列が混ざっていることまでは確認した。先に整数へ変換すべきか」という質問です。まだ確認していないなら、I checked ...とは書かず、I am not sure whether ...(〜かどうか分からない)を使います。
エラー文は、種類と意味が変わらない形で原文を残すと調べやすくなります。一方、ローカルの個人名入りパス、認証情報、顧客データが含まれる部分は、質問に必要かを確認して取り除いてください。質問の構成は、英語のバグ報告の書き方も参考になります。
練習問題|エラーを見て最初に調べる場所を選ぶ

次の3つについて、種類を訳すだけでなく「最初に何を確認するか」を答えてみてください。
| 表示 | 確認の出発点 |
|---|---|
| NameError: name ‘minutes’ is not defined | minutesを定義したか。minuteとの綴り違い、定義順、使える範囲を見る |
| KeyError: ‘subject’ | 辞書にsubjectがあるか。データ側のキー名と照合する |
| FileNotFoundError: No such file or directory | ファイル名、置き場所、現在の作業ディレクトリを確認する |
「名前を作る」「キーを追加する」「空ファイルを作る」と即座に直すのではなく、元の意図と実際の状態を比べるのがポイントです。1か所を変えたら再実行し、正しい出力も確認します。
よくある質問
エラーメッセージは全部日本語に訳すべきですか?
最初は種類、詳細に出る名前や値、自分のファイル名と行番号を優先します。全体の訳は、そこだけでは原因を絞れないときに補助として使ってください。検索や質問のために、原文も残しておくと便利です。
エラーが消えれば修正完了ですか?
欲しい結果になったかも確認します。たとえば足し算を文字列の連結へ変えればTypeErrorが消える場合がありますが、合計45が欲しいのに3015になれば目的を満たしていません。
try…exceptで全部のエラーを隠してよいですか?
練習中に原因を調べたいときは、何が起きたか分かる表示を残してください。起こり得る失敗を理解したうえで、必要な例外を扱い、利用者へ次の操作を案内します。何もせず無視すると、間違ったデータに気づきにくくなります。
まとめ:エラーを手がかりに、調べる場所を決めよう
エラーを見たら、種類、具体的な名前や値、該当する行を結び付けましょう。短いコードで同じエラーを再現できると、英語の意味とプログラムの動作を一緒に覚えられます。さらに進めるなら、英語の公式ドキュメントを読む手順で、関数が求める入力も確認してみてください。
ITと英語を一緒に学ぶ方法を相談したい方へ
KredoではITと英語を学ぶ留学プログラムを案内しています。「英文を読む」「分からない点を質問する」「作ったものを説明する」など、目標にしたい場面から学習内容を相談できます。
英語でIT・AIを学べるKredo
英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?
当メディアを運営しているKredoは、英語×ITをオンラインで学ぶ「Kredoオンラインキャンプ」と、フィリピンのセブ島で英語とIT・AIを学ぶ「KredoIT留学」「KredoAI留学」を提供しています。これまでの卒業生は3,000名以上。卒業生の多くが、国内外のIT企業への転職、フリーランスなどへのキャリアチェンジを実現しています。これからの時代に必要な英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?











