0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの「distutils.utilが見つからない」エラーを解決する方法

0
Posted at

現場のPythonプロジェクトで「No module named distutils.util」というエラーに遭遇し、古いライブラリのビルドが完全に止まってしまい、調査に時間を要した話です。

このエラー、実はPython 3.12以降で標準ライブラリからdistutilsが削除されたことに起因する、パッケージングシステムの進化に伴う避けられない問題でした。

何が起きたか(課題)

特定の環境でパッケージをインストールしようとしたとき、以下の症状が発生しました。

  • Python 3.12環境でビルドが必要な外部ライブラリのインストールが失敗する。
  • エラーログに「ModuleNotFoundError: No module named 'distutils.util'」が繰り返し現れる。
  • 古いsetup.pyを持つパッケージに依存している場合に特に顕著。

どう解決したか(概要)

解決のアプローチは、一時的な対応と恒久的な対応の二段階で進めました。根本原因は、OSレベルのビルド依存性の欠如と、Python本体からのdistutilsの除去です。

まず、Linux環境で不足しているPython開発関連のパッケージをOSパッケージマネージャ経由でインストールし、ビルドに必要な依存関係を補いました。具体的には、Debian/Ubuntu系であればsudo apt install python3-distutilsを実行しました。

次に、Python 3.12以降の標準対応として、依存しているライブラリ群がsetuptoolsに依存するように移行させる必要性を確認しました。もし自分で開発しているコードであれば、from distutils.core import setupfrom setuptools import setupに書き換える作業が必要です。また、仮想環境の再構築も行い、ホストOSの依存関係がクリーンな状態で環境が作成されるようにしました。

効果(Before/After)

OS依存パッケージのインストールとsetuptoolsのアップグレードを実施した結果、ビルドエラーは即座に解消されました。

  • Before: 特定の外部パッケージのインストール試行時にビルドが失敗し、依存関係が解決しない。
  • After: 依存パッケージのインストールがスムーズに完了し、Python 3.12環境での開発継続が可能になった。

🚀 詳細な設定とコードはこちら

具体的なOS別のインストールコマンド一覧や、ライブラリ開発者向けのsetup.py修正例の全文については、元のブログで詳しく解説しています。

👉 Pythonの「distutils.utilが見つからない」エラーを解決する方法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?