このエラーは PEP 668(externally-managed-environments) による安全装置が働いているサインです。Homebrew が管理する Python 本体に、pip
で直接パッケージを書き込んで壊さないようブロックしています。
仕組み(何が起きている?)
- Homebrew の Python には、“この環境は外部(パッケージマネージャ)で管理されています” という目印ファイルが置かれます。
例(M1/M2):/opt/homebrew/lib/python3.x/site-packages/EXTERNALLY-MANAGED
pip
はインストール時にこのファイルを検知すると、ベース環境への直接インストールを拒否します。- 目的は、Homebrew が管理する依存関係を
pip
が上書きして 環境を破壊する事故を防ぐことです(システムのPythonでも同様の方針が広がっています)。
解決方法:仮想環境(venv)を作成する
python3 -m venv venv
→source venv/bin/activate
- 仮想環境であれば自由に pip install が可能
なぜ venv なら通るの?
venv
は 独立したローカル環境なので、そこには上記の目印がなく、pip
が自由にインストールできます。実運用でも 「ベースは清潔に、作業は仮想環境で」 が一般的に推奨されています。
まとめ
- エラーの正体:PEP 668 に基づく「ベース環境保護」。
- Homebrew の Python には EXTERNALLY-MANAGED が置かれ、
pip
を実行できない。 - 解決策:仮想環境で作業する