この記事では Django での開発時の、 EOFError: marshal data too short エラーの解消法を備忘録として紹介します。
エラーの原因(の可能性)
Python はコードをコンパイルして .pyc ファイル(バイトコード)を生成します。
このファイルが壊れている場合、このエラーが発生する可能性があります。
私の発生時は、 docker でかなり違うバージョンの2つのブランチを切り替えて起動した際に発生しました。
エラーの解消方法
私の場合は、pycache ディレクトリを削除することで解消しました。
Django プロジェクト内のすべての pycache ディレクトリと .pyc ファイルを削除することで、不整合状態が解消されたと考えられます。
macOS の場合、以下のコマンドで一括削除できます。
find . -name "__pycache__" -exec rm -rf {} +
find . -name "*.pyc" -exec rm -rf {} +
イメージとしては、キャッシュのクリアに近いです。
おわりに
このようなエラー時は切り分けが重要です。
今まで動作していたのに突然生じたら、コードの問題である可能性は低いです。
キャッシュや設定ファイルをまずは疑うのが近道かもしれません。
コメント