Re:ピカログ

個人的メモの雑記

ユーザ用ツール

サイト用ツール


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki