dev:japanese_matplotlib_distutils_error
目次
matplotlibで日本語を簡単に扱える japanize-matplotlib がpython3.12以降 ModuleNotFoundError: No module named 'distutils'エラーになる
Python3.12以降にdistutilsが廃止され、setuptoolsに完全コピーの形で統合された。
ひとまずは、setuptoolsをインストールすれば問題ない。
pip install setuptools
動作確認
OS: Windows11 Python: 3.12.7
指数関数をプロットする。ラベルに日本語が含まれる。
import numpy as np import matplotlib.pyplot as plt # x軸のデータ(-2から2まで、0.1刻み) x = np.arange(-2.0, 2.0, 0.1) # 指数関数 y = e^x y = np.exp(x) # プロット plt.plot(x, y, label='y = exp(x)', color='blue') plt.title('指数関数') plt.xlabel('x軸') plt.ylabel('y軸') plt.grid(True) plt.legend() plt.show()
日本語ラベルがうまく表示されない。
importをmatplotlib直下の行に追加する。
import japanize_matplotlib
$ python plot.py > from distutils.version import LooseVersion ModuleNotFoundError: No module named 'distutils'
distutilsはpipでもう入らない。
pip install distutils ERROR: Could not find a version that satisfies the requirement distutils (from versions: none)
setuptoolsをインストールし、再実行。
pip install setuptools
将来的な対応
PEP632にはこの件の詳細情報が記載されている。setuptoolsに段階的にdistutilsを置き換え、完全なコピーを実現したようだ。
下位互換については3.12からは動作しなくなると記載がある。殆どの場合で問題ないことそうだが、将来的な動作は保証されないということだ。
この問題に対応するフォークもあるため、システムに組み込むなど長期利用する場合は利用するのも手だろう。
参考
dev/japanese_matplotlib_distutils_error.txt · 最終更新: 2025/05/14 01:42 by hogemin