笑うPython男のアイコン

トップ > つまずきTips集

つまずきTips集|よくあるエラーの処方箋

エラーは敵ではなく、Pythonからの手紙です。ここでは初心者が必ず一度はハマる詰まりどころを、症状ごとに見出しで引けるようにまとめました。困ったら、エラーの名前でこのページ内を探してください。

笑うPython男

笑うPython男

エラー文って、赤い字で怒ってるように見えるよね。でもあれ、だいたい「場所」と「理由」を教えてくれてるだけ。読み方さえ分かれば、意外と親切なんだよ。

大原則:エラーメッセージの読み方

Pythonのエラーは、最後の行に「エラーの種類」と「ひとこと理由」が書かれています。まずは最後の行だけ読む。その上の行は「そこに至るまでの道のり」です。

Traceback (most recent call last): File "app.py", line 3, in <module> import requests ModuleNotFoundError: No module named 'requests' # ← ここが結論

Tip 1:ModuleNotFoundError(入れたはずなのに無い)

症状:ModuleNotFoundError: No module named '◯◯'

原因のほとんど:仮想環境を有効化しないまま実行しているか、そもそもインストールしていないか、です。「入れた」と「実行している環境に入っている」は別問題なのが落とし穴。

# 1) 有効化を確認(行頭に (.venv) があるか) # 2) 実行中のPythonで入れる、が確実 python -m pip install requests

python -m pip と書くと「今から実行するPython自身」に道具が入るので、環境違いの事故が消えます。

Tip 2:IndentationError(字下げの乱れ)

症状:IndentationError: unexpected indent など

原因:スペースとタブの混在、コピペで字下げがずれた、など。Pythonでは字下げが文法なので、見た目の乱れ=意味の乱れです。

Tip 3:文字化け(UnicodeDecodeError)

症状:ファイルを読んだら文字化け、または UnicodeDecodeError

原因:ファイルの文字コードと、読み取り側の前提が違うこと。日本語ファイルでありがちです。

# 読み書きのときは文字コードを明示するのが習慣 with open("memo.txt", encoding="utf-8") as f: text = f.read()

Windowsのメモ帳などで作ったファイルは、古い形式(Shift_JIS)のことがあります。その場合は encoding="shift_jis" で開くと読めます。

笑うPython男

笑うPython男

文字化けは日本語圏の通過儀礼みたいなもの。ボクは最初から文字化けしない世界にいるけど、キミたちはそうもいかない。encoding を書く癖、つけておいて損はないよ。

Tip 4:ファイルが見つからない(FileNotFoundError)

症状:FileNotFoundError: [Errno 2] No such file or directory

原因:「ファイル名の打ち間違い」よりも「今いるフォルダの勘違い」が圧倒的に多いです。プログラムは「実行した場所」から相対的に探します。

# 今どこにいるつもりか、まず確認する import os print(os.getcwd())

ファイルの置き場所が確実なときは、絶対パス(場所のフル住所)で書くのも手です。

Tip 5:'python' が認識されない(Windows)

症状:「'python' は、内部コマンドまたは外部コマンド…として認識されていません」

原因:インストール時の「Add python.exe to PATH」のチェック漏れ。対処は導入記事にまとめています。

→ Pythonの導入(PATHの直し方)

Tip 6:日本語を打つと SyntaxError

症状:コメントのつもりが SyntaxError

原因:コメントの # 忘れ、全角の記号(:や()など)の混入。エディタの入力モードに注意です。全角スペースも字下げとして効いてしまうので目視チェックを。

笑うPython男

笑うPython男

詰まったら、まずエラーの最後の1行を声に出して読んでごらん。それでも分からなければ、その文をそのまま検索するのが一番速い。大抵の人はそこで答えにたどり着くよ。

次の記事:おすすめ教材(レベル別)

独学の道しるべになる書籍を、レベル別に紹介します。(広告を含みます)

次の記事へ進む