Skip to content

distutils.util モジュールが見つからない問題の解決方法

問題の概要

Python 3.10以降のバージョンでパッケージをインストールしようとすると、以下のエラーが発生することがあります:

bash
ModuleNotFoundError: No module named 'distutils.util'

このエラーは、Pythonの標準ライブラリからdistutilsモジュールが削除されたことにより発生します。distutilsはPython 3.10で非推奨となり、Python 3.12で完全に削除されました。

原因

Python 3.12では、以下の変更が実施されました:

  • distutilsモジュールが標準ライブラリから削除
  • 仮想環境作成時にsetuptoolsが自動インストールされなくなった
  • 多くのパッケージ管理ツールが内部的にdistutilsに依存している

解決方法

方法1: setuptoolsのインストール(推奨)

最も一般的な解決策は、setuptoolsを明示的にインストールすることです:

bash
pip install setuptools

TIP

setuptoolsdistutilsの機能を提供しており、後方互換性を保っています。

方法2: バージョン固有のdistutilsパッケージのインストール(Ubuntu/Debian)

特定のPythonバージョン用のdistutilsをインストールする:

bash
# Python 3.10の場合
sudo apt-get install python3.10-distutils

# Python 3.11の場合
sudo apt-get install python3.11-distutils

# Python 3.12の場合
sudo apt-get install python3.12-distutils

方法3: システム全体でのsetuptoolsインストール

システム全体にsetuptoolsをインストールする:

bash
# Ubuntu/Debian
sudo apt install python3-setuptools

# Homebrew (macOS)
brew install python-setuptools

方法4: 仮想環境の再作成

仮想環境に問題がある場合は、再作成することで解決することがあります:

bash
# 現在の仮想環境を削除
rm -rf venv

# 新しい仮想環境を作成
python -m venv venv

# 仮想環境をアクティベート
source venv/bin/activate

# setuptoolsをインストール
pip install setuptools

方法5: Pythonバージョンのダウングレード

どうしても解決しない場合は、Python 3.11以前のバージョンを使用するという選択肢もあります。

よくあるシナリオ別対応

仮想環境作成時のエラー

仮想環境作成時に以下のエラーが出る場合:

bash
The virtual environment was not created successfully because ensurepip is not available.

以下のパッケージをインストールします:

bash
sudo apt install python3.10-venv  # バージョンに応じて変更

複数Pythonバージョンがインストールされている場合

複数のPythonバージョンがインストールされている場合、正しいバージョンのpipを使用していることを確認してください:

bash
# 特定のPythonバージョン用のpipを使用
python3.10 -m pip install setuptools

# 現在のデフォルトPythonバージョンを確認
python --version

Windows環境での対応

Windowsでは、Visual C++ Build Toolsのインストールが必要な場合があります:

  1. Visual Studio Build Toolsをダウンロード
  2. "C++によるデスクトップ開発"ワークロードをインストール
  3. システムを再起動

根本的な解決

長期的には、パッケージメンテナーはdistutilsの使用を避け、setuptoolsや他の現代的なパッケージングツールに移行することが推奨されています。

開発者向けの移行ガイドはPEP 632で詳しく説明されています。

まとめ

ModuleNotFoundError: No module named 'distutils.util'エラーは、主に以下のいずれかで解決できます:

  1. pip install setuptoolsでsetuptoolsをインストール
  2. オペレーティングシステムのパッケージマネージャーで適切なパッケージをインストール
  3. 仮想環境を適切に再作成

Python 3.12以降を使用する場合、distutils関連の問題に遭遇したときは、まずsetuptoolsのインストールを試みることが最初のステップとなります。