Pythonエラー一覧|よくあるエラーの意味・原因・直し方

Pythonを学習していると、突然赤い文字でエラーメッセージが表示されて、手が止まってしまうことがあります。
SyntaxError、NameError、TypeError、KeyError、ModuleNotFoundError など、英語のエラー名が出てくると、最初は少し難しく感じるかもしれません。
しかし、Pythonのエラーはやみくもに読む必要はありません。まずはエラー名を見れば、「文法ミスなのか」「変数名のミスなのか」「型の違いなのか」「ファイルやモジュールが見つからないのか」といった原因の方向性をつかめます。
この記事では、Python初心者がよく出会うエラーを一覧でまとめ、それぞれの意味、よくある原因、直し方をわかりやすく解説します。
今まさにエラーが出て困っている方は、目次や早見表から該当するエラー名を探してみてください。エラー名が分かれば、どこを確認すればよいかが見えてきます。
Pythonエラーの見方|まずは最後の1行を確認しよう
Pythonでエラーが出たときは、最初からすべての文章を読もうとしなくても大丈夫です。まず確認したいのは、エラーメッセージの最後の1行です。
Pythonのエラーでは、最後の行にエラー名と詳しい内容が表示されることが多くあります。たとえば、次のような形です。
NameError: name 'scoree' is not defined
この場合、左側の NameError がエラー名です。そして、右側の name 'scoree' is not defined が、具体的なエラー内容です。
それぞれの部分には、次のような意味があります。
| 表示される部分 | 例 | 意味 |
|---|---|---|
| エラー名 | NameError | どの種類のエラーかを表す |
| 詳細メッセージ | name 'scoree' is not defined | 何が原因でエラーになったかを説明する |
この例では、NameError と表示されているため、「名前に関するエラー」だと分かります。さらに、scoree という名前が定義されていないと書かれているので、変数名のスペルミスや、変数を作る前に使っている可能性を疑います。
たとえば、次のコードでは変数名を間違えているため、NameError が発生します。
score = 80 print(scoree)
このコードでは、1行目で score という変数を作っています。しかし、2行目では scoree と書いています。Pythonから見ると、score と scoree は別の名前です。そのため、「scoree という名前は定義されていません」というエラーになります。
修正する場合は、変数名をそろえます。
score = 80 print(score)
このように、エラー名を見ると「何を確認すればよいか」がある程度分かります。最初から長いエラーメッセージ全体を理解しようとするよりも、まずは最後の1行を見て、エラー名を確認するのがおすすめです。
Pythonのエラーメッセージを見るときは、次の順番で確認すると原因を探しやすくなります。
- 最後の1行にあるエラー名を見る
- エラー名の右側にある詳しいメッセージを読む
- エラーが出ている行番号を確認する
- 変数名、記号、型、ファイル名などを見直す
- エラー名をこの記事の一覧から探す
たとえば、SyntaxError と表示されていれば、カッコやクォーテーション、コロンなどの文法ミスを確認します。TypeError と表示されていれば、文字列と数値を混ぜていないか、関数に渡している値の型が合っているかを確認します。
よくあるエラー名と、最初に確認したいポイントを簡単にまとめると次のようになります。
| エラー名 | まず確認したいこと |
|---|---|
SyntaxError | カッコ、クォーテーション、コロンなどの文法ミス |
NameError | 変数名や関数名のスペルミス、定義位置 |
TypeError | 文字列、数値、リストなどの型の違い |
ValueError | 型は合っているが、値の中身が正しいか |
IndexError | リストの番号が範囲外になっていないか |
KeyError | 辞書に存在しないキーを指定していないか |
ModuleNotFoundError | モジュールがインストールされているか、実行環境が合っているか |
FileNotFoundError | ファイル名やファイルの場所が正しいか |
ただし、エラー名だけで原因が完全に分かるとは限りません。同じ TypeError でも、文字列と数値を足そうとしている場合もあれば、関数に渡す引数の数が違っている場合もあります。
そのため、エラー名で大まかな原因をつかみ、詳細メッセージとエラーが出ている行を見ながら、具体的な原因を探していくことが大切です。
このあとの章では、Python初心者がよく見るエラーを一覧で紹介し、それぞれの意味、よくある原因、修正例を順番に解説していきます。
Pythonエラー早見表
Pythonのエラーは種類が多いですが、初心者がよく出会うものはある程度決まっています。
まずは、エラー名を見て「どのような原因が多いのか」「最初にどこを確認すればよいのか」を把握しておきましょう。
エラーが出たときに、毎回すべてを暗記する必要はありません。困ったときに、この表から該当するエラー名を探せば大丈夫です。
| エラー名 | 意味 | よくある原因 | まず確認すること |
|---|---|---|---|
SyntaxError詳しく見る | 文法に間違いがある | カッコ、クォーテーション、コロンの書き忘れ | 記号の閉じ忘れや入力ミス |
IndentationError詳しく見る | インデントが正しくない | 行頭の空白がずれている | if、for、def の次の行の字下げ |
NameError | 名前が見つからない | 変数名や関数名のスペルミス | 変数名のつづり、定義した場所 |
UnboundLocalError | ローカル変数を代入前に使っている | 関数内で変数を更新しようとしている | 関数内の変数の扱い |
TypeError | 型の使い方が正しくない | 文字列と数値をそのまま足している | データ型が合っているか |
ValueError | 値の内容が正しくない | int("abc") のように変換できない値を渡している | 関数に渡している値の中身 |
ZeroDivisionError | 0で割ろうとしている | 割り算の分母が0になっている | 割る数が0ではないか |
IndexError | リストなどの番号が範囲外 | 存在しない位置の要素を取り出している | インデックス番号と要素数 |
KeyError | 辞書に指定したキーがない | 存在しないキーを指定している | キー名のスペル、キーの有無 |
AttributeError | 属性やメソッドが存在しない | その型では使えないメソッドを呼んでいる | オブジェクトの型、メソッド名 |
ModuleNotFoundError | モジュールが見つからない | ライブラリをインストールしていない | pip install、Python環境 |
ImportError | インポートに失敗している | 存在しない関数やクラスを読み込もうとしている | import 文、ライブラリのバージョン |
FileNotFoundError | ファイルが見つからない | ファイル名やパスが間違っている | ファイルの場所、実行しているフォルダ |
PermissionError | ファイルやフォルダへの権限がない | ファイルを開いたまま書き込もうとしている | ファイルの使用状況、アクセス権限 |
UnicodeDecodeError | 文字コードの読み込みに失敗している | CSVなどの文字コードが合っていない | encoding の指定 |
RecursionError | 再帰呼び出しが深くなりすぎている | 関数が自分自身を呼び続けている | 再帰処理の終了条件 |
初心者のうちは、すべてのエラーを完璧に覚えようとしなくても問題ありません。大切なのは、エラーが出たときにあわてず、次のように確認することです。
- エラー名を見る
- この早見表で意味を確認する
- よくある原因に当てはまるか考える
- エラーが出ている行の周辺を見直す
- 必要に応じて、各エラーの詳しい解説を読む
まずはエラー名から原因の方向性をつかみ、そのあとで具体的なコードを確認していきましょう。

エラーの種類から原因を探そう
Pythonのエラーは、1つずつバラバラに覚えるよりも、種類ごとに分けて考えると理解しやすくなります。
たとえば、SyntaxError は文法ミス、NameError は変数名や関数名のミス、FileNotFoundError はファイルの場所に関するミスです。このように、エラー名をカテゴリで整理しておくと、エラーが出たときに「まずどこを確認すればよいか」が見つけやすくなります。
ここでは、Python初心者がよく見るエラーを種類別に整理していきます。詳しい原因や修正例は、早見表のリンクから各エラーの個別解説を確認してください。
文法ミスで起きるエラー
文法ミスで起きるエラーは、Pythonのコードの書き方が正しくないときに発生します。
代表的なエラーは、SyntaxError と IndentationError です。カッコの閉じ忘れ、クォーテーションの閉じ忘れ、コロンの書き忘れ、インデントのずれなどが原因になります。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
SyntaxError | Pythonの文法に合っていない | カッコ、クォーテーション、コロン |
IndentationError | インデントが正しくない | 行頭の空白、タブとスペースの混在 |
文法ミスのエラーは、プログラムを実行する前の段階で見つかることが多いです。エラーが出た行だけでなく、その1つ前の行に原因がある場合もあります。
特に if、for、while、def の行では、行末のコロンと次の行のインデントをセットで確認するとよいでしょう。
変数・関数名で起きるエラー
変数名や関数名の使い方に問題があると、名前に関するエラーが発生します。
代表的なエラーは、NameError と UnboundLocalError です。変数名のスペルミス、定義する前に変数を使っている、関数の中と外で変数の扱いを間違えている場合などに起こります。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
NameError | 定義されていない名前を使っている | 変数名や関数名のスペル、定義位置 |
UnboundLocalError | 関数内で代入前のローカル変数を使っている | 関数内の変数、引数、戻り値 |
Pythonでは、変数名の大文字と小文字も区別されます。たとえば、score と Score は別の名前として扱われます。
また、Pythonは上から順番にコードを実行するため、変数を使う前に定義しているかも大切です。関数の中で変数を扱う場合は、その変数が関数の中で作られたものなのか、外側で作られたものなのかも確認しましょう。
型や値の違いで起きるエラー
データの型や値の内容が処理に合っていないと、型や値に関するエラーが発生します。
代表的なエラーは、TypeError、ValueError、ZeroDivisionError です。文字列と数値をそのまま足す、数値に変換できない文字列を int() に渡す、0で割る、といったケースでよく発生します。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
TypeError | 型の使い方が合っていない | 文字列、数値、リストなどのデータ型 |
ValueError | 値の中身が処理に合っていない | int() や float() に渡している値 |
ZeroDivisionError | 0で割ろうとしている | 割り算の右側の値 |
TypeError と ValueError は似ていますが、考え方は少し違います。
TypeError は「データの種類が合っていないエラー」です。一方、ValueError は「データの種類は合っているけれど、中身が処理に合っていないエラー」です。
たとえば、文字列と数値を直接足すと TypeError、int("abc") のように数値に変換できない文字列を渡すと ValueError になります。
リスト・辞書で起きるエラー
リストや辞書からデータを取り出すときに、存在しない場所やキーを指定するとエラーになります。
代表的なエラーは、IndexError と KeyError です。リストでは番号、辞書ではキーを使って値を取り出すため、確認するポイントが異なります。
| エラー名 | 主に起きる場面 | 確認するポイント |
|---|---|---|
IndexError | リストやタプル | インデックス番号、要素数 |
KeyError | 辞書 | キー名、キーの有無 |
リストのインデックスは 0 から始まります。そのため、要素が3つあるリストで使えるインデックスは 0、1、2 です。3 を指定すると、存在しない位置を参照しているため IndexError になります。
辞書では、存在しないキーを指定すると KeyError になります。キーがあるか不安な場合は、in で確認したり、get() を使ったりすると安全です。
属性・メソッドで起きるエラー
属性やメソッドの使い方を間違えると、AttributeError が発生します。
Pythonでは、データ型によって使えるメソッドが異なります。たとえば、リストでは append() を使えますが、文字列には append() は使えません。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
AttributeError | 存在しない属性やメソッドを使っている | 変数の型、メソッド名、戻り値 |
AttributeError が出たときは、まずその変数がどの型なのかを確認することが大切です。
リストだと思っていた変数が実は文字列だったり、処理結果が None になっていたりすると、その後のメソッド呼び出しでエラーになることがあります。
変数の型を確認したい場合は、type() を使うと原因を探しやすくなります。
モジュール・インポートで起きるエラー
外部ライブラリや自作ファイルを読み込むときに問題があると、インポートに関するエラーが発生します。
代表的なエラーは、ModuleNotFoundError と ImportError です。どちらも import に関係するエラーですが、原因は少し違います。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
ModuleNotFoundError | モジュール自体が見つからない | インストール状況、モジュール名、Python環境 |
ImportError | モジュール内の指定した名前を読み込めない | import文、関数名、クラス名、バージョン |
ModuleNotFoundError は、ライブラリをインストールしていない場合や、実行しているPython環境とインストール先が違う場合によく発生します。
一方、ImportError は、モジュール自体は見つかっているものの、その中に指定した関数やクラスが存在しない場合などに発生します。
インポート系のエラーでは、モジュール名のスペル、pip install の実行状況、VS Codeなどで選択しているPython環境を確認しましょう。
ファイル操作で起きるエラー
CSV、テキストファイル、ExcelファイルなどをPythonで扱うときは、ファイル操作に関するエラーが発生することがあります。
代表的なエラーは、FileNotFoundError、PermissionError、UnicodeDecodeError です。ファイルの場所、権限、文字コードが原因になることが多いです。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
FileNotFoundError | 指定したファイルが見つからない | ファイル名、パス、実行しているフォルダ |
PermissionError | ファイルやフォルダへの権限がない | ファイルを開いたままにしていないか、保存先の権限 |
UnicodeDecodeError | 文字コードが合っていない | encoding の指定、CSVの文字コード |
FileNotFoundError が出た場合は、まずファイル名とファイルの場所を確認しましょう。相対パスで指定している場合は、現在どのフォルダを基準に実行されているかも重要です。
PermissionError は、Excelファイルを開いたままPythonで書き込もうとした場合などにも発生します。
UnicodeDecodeError は、CSVファイルなどを読み込むときに文字コードが合っていない場合によく起きます。日本語のCSVでは、utf-8 ではなく cp932 を指定すると読み込める場合があります。
処理の流れで起きるエラー
処理の流れに問題があると、プログラムが想定どおりに終わらず、エラーになることがあります。
代表的なエラーは、RecursionError です。これは、再帰処理が深くなりすぎたときに発生します。
| エラー名 | 主な原因 | 確認するポイント |
|---|---|---|
RecursionError | 関数が自分自身を呼び続けている | 再帰処理の終了条件 |
再帰処理とは、関数の中で自分自身を呼び出す処理のことです。正しく使えば便利ですが、終了条件がないと、関数が何度も自分自身を呼び続けてしまいます。
RecursionError が出たときは、再帰処理に終了条件があるか、その条件にいつか到達するようになっているかを確認しましょう。
初心者のうちは、再帰処理を使わずに for 文や while 文で書けないかを考えてみるのもよい方法です。
このように、Pythonのエラーは種類ごとに見ると、確認するポイントがかなり整理できます。エラー名を見て原因のカテゴリを判断し、詳しい直し方が必要な場合は、早見表から個別解説に進むと効率よく解決できます。
Pythonエラー一覧に関するよくある質問
最後に、Pythonのエラー一覧について、初心者の方が疑問に感じやすいポイントをまとめます。
エラーは最初からすべて覚える必要はありません。まずは、よく出るエラー名と原因の方向性を知っておき、困ったときに早見表や個別解説を見ながら確認していきましょう。
Python初心者がよく見るエラーはどれですか?
Python初心者がよく見るエラーには、SyntaxError、NameError、TypeError、ValueError、IndexError、KeyError、ModuleNotFoundError などがあります。
特に学習を始めたばかりのころは、カッコやコロンの書き忘れ、変数名のスペルミス、文字列と数値の扱い方の違いでエラーになることが多いです。
代表的なエラーを整理すると、次のようになります。
| エラー名 | 初心者によくある原因 |
|---|---|
SyntaxError | カッコ、クォーテーション、コロンの書き忘れ |
NameError | 変数名や関数名のスペルミス |
TypeError | 文字列と数値など、型の違い |
ValueError | 数値に変換できない値を渡している |
IndexError | リストの存在しない番号を指定している |
KeyError | 辞書に存在しないキーを指定している |
ModuleNotFoundError | ライブラリがインストールされていない |
最初は、すべてのエラーを暗記しようとしなくても大丈夫です。エラーが出たときに、エラー名を見てこの一覧から探せるようになれば十分です。
Pythonのエラーはすべて覚える必要がありますか?
Pythonのエラーをすべて覚える必要はありません。
大切なのは、エラー名を見たときに「だいたい何が原因なのか」を考えられることです。たとえば、NameError なら名前のミス、TypeError なら型のミス、FileNotFoundError ならファイルの場所のミスを疑う、というように原因の方向性をつかめれば問題ありません。
エラーに慣れる流れは、次のように考えると分かりやすいです。
| 段階 | できればよいこと |
|---|---|
| 最初の段階 | エラー名を見つけられる |
| 次の段階 | エラー名から原因の方向性を考えられる |
| 慣れてきた段階 | 詳細メッセージや行番号から原因を絞れる |
| 実践段階 | よくある修正方法を自分で選べる |
エラーは、実際にコードを書きながら少しずつ慣れていくものです。分からないエラーが出たら、その都度調べて理解していけば問題ありません。
エラー名が分からないときはどうすればよいですか?
エラー名が分からないときは、まずエラーメッセージの最後の1行を確認しましょう。
Pythonのエラーメッセージでは、最後の行に NameError や TypeError のようなエラー名が表示されることが多いです。そのエラー名を見つけて、この記事の早見表から探すと原因を確認しやすくなります。
たとえば、次のようなエラーが出たとします。
NameError: name 'scoree' is not defined
この場合、エラー名は NameError です。まずは早見表で NameError を探し、変数名のスペルミスや定義位置を確認します。
エラー名が見つからない場合は、次の点を順番に確認しましょう。
- エラーメッセージの最後の1行を見る
Errorで終わる単語を探す- エラーが出ている行番号を確認する
- 直前に変更したコードを見直す
- 早見表に近いエラーがないか探す
エラーメッセージ全体の読み方を基礎から学びたい場合は、Lesson2-8「エラーメッセージの意味を理解しよう」も参考にしてください。
まとめ|Pythonエラーは一覧から原因を探そう
Pythonのエラーは、最初は難しく見えるかもしれません。しかし、エラー名を確認すると、原因の方向性はある程度見えてきます。
SyntaxError なら文法ミス、NameError なら変数名や関数名のミス、TypeError なら型の違い、FileNotFoundError ならファイルの場所の問題、というように、エラー名には原因を探すためのヒントが含まれています。
エラーが出たときは、まずエラーメッセージの最後の1行を確認し、エラー名を見つけましょう。そのうえで、この記事の早見表から意味や確認ポイントを探すと、どこを見直せばよいか分かりやすくなります。
詳しい原因や修正例を知りたい場合は、早見表にある各エラーの個別解説記事も参考にしてください。
エラーは、プログラミング学習で必ず出会うものです。すべてを暗記する必要はありません。エラーが出るたびに少しずつ原因を確認していけば、自然と読み方や直し方に慣れていきます。