パッケージをインストールしたくても「This environment is externally managed」と出る理由と対処法

このエラーは 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 venvsource venv/bin/activate
  • 仮想環境であれば自由に pip install が可能

なぜ venv なら通るの?

venv独立したローカル環境なので、そこには上記の目印がなく、pip が自由にインストールできます。実運用でも 「ベースは清潔に、作業は仮想環境で」 が一般的に推奨されています。

まとめ

  • エラーの正体:PEP 668 に基づく「ベース環境保護」。
  • Homebrew の Python には EXTERNALLY-MANAGED が置かれ、pip を実行できない。
  • 解決策:仮想環境で作業する

-Python
-,