matplotlibのModuleNotFoundError: 'matplotlib.backends.registry' 解決法
問題の背景
Pythonのデータ可視化ライブラリであるmatplotlib
を使用中に、以下のエラーが発生するケースがあります:
python
ModuleNotFoundError: No module named 'matplotlib.backends.registry'
このエラーは通常、以下の状況で発生します:
- 古いバージョンのmatplotlibを使用している
- インストールが破損している
seaborn-whitegrid
など非推奨のスタイル設定を試みている
原因分析
エラーが発生する主な要因は3つあります:
matplotlibのインストール破損
パッケージのインストールに失敗し、重要なモジュールが欠損状態になるスタイル名の非推奨化
plt.style.use('seaborn-whitegrid')
は新しいバージョンで利用不可にpython# 無効な記述例 plt.style.use('seaborn-whitegrid') # 非推奨
パッケージの残存ファイル
不完全なアンインストールにより~atplotlib
等の残存ファイルがエラーの原因に
解決手順
方法1: 強制再インストール(推奨)
既存パッケージのアンインストール
bashpip uninstall -y matplotlib seaborn
依存関係なしで再インストール
bashpip install --force-reinstall --no-cache-dir --no-deps matplotlib pip install --force-reinstall --no-cache-dir --no-deps seaborn
依存関係を追加インストール
bashpip install numpy pillow pyparsing cycler python-dateutil
方法2: 手動で残存ファイル削除(方法1が失敗する場合)
Pythonのパッケージディレクトリを開く
- 通常のパス:
C:\Users\<ユーザー名>\AppData\Local\Programs\Python\<バージョン>\Lib\site-packages\
- 通常のパス:
以下のファイル/フォルダを削除:
matplotlib
(フォルダ全体)mpl_toolkits
(フォルダ)~atplotlib
(チルダ付きファイル)matplotlib-*.dist-info
(メタデータファイル)
警告
削除操作は注意して行ってください。他のパッケージファイルを誤って削除しないようご注意ください
方法3: 新しいスタイル設定方法の適用
インストール修正後、最新のスタイル設定方法を使用:
python
# 推奨される方法
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
# Seabornを使用したスタイル設定
sns.set_theme(style="whitegrid") # 最新のテーマ設定API
# またはMatplotlibネイティブの設定
plt.style.use('seaborn-v0_8-whitegrid') # v0.8互換モード
動作確認コード
正しくインストールできたか確認するテストコード:
python
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="whitegrid")
import numpy as np
# サンプルプロットの生成
fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
ax.set_title("動作確認プロット")
plt.show()
補足事項
Jupyterユーザー向け注意点
環境によっては追加で以下が必要:bashpip install --upgrade ipython jupyter
バージョン互換性
Python 3.13では以下のバージョン確認を推奨:pythonimport matplotlib print(matplotlib.__version__) # 3.8.0以上が必要
インストール確認方法
正しいスタイルが適用できているか確認:pythonprint(plt.style.available) # 有効スタイル一覧表示
::: success ベストプラクティス
- パッケージ管理に
virtualenv
やconda
を使用する seaborn.set_theme()
でスタイル設定を行う- 定期的に
pip list --outdated
で更新確認を ::>
結果例
正常に動作すると以下のような出力が得られます:
白色グリッド背景のサイン波形