C
Python検証済み

How do I solve "error: externally-managed-environment" every time I use pip 3 の原因と直し方【Dockerで検証済み】

How do I solve "error: externally-managed-environment" every time I use pip 3? の原因と解決方法。検証済みの解決コマンド付きで、現象→原因→解決→確認の順に最短で直せます。

発生したエラー

エラー出力
How do I solve "error: externally-managed-environment" every time I use pip 3?

結論:まずこれで直ります

下の解決コマンドを順に実行すれば直ります。

解決コマンド
# The correct fix: use a virtual environment to isolate dependencies
# This is the proper solution recommended by PEP 668
python3 -m venv /opt/myenv
/opt/myenv/bin/pip install requests

現象どんなエラーか

次の操作を行うと(検証環境: python:3.11)、上記のエラーが発生します。まずは下の再現コマンドで、同じ状況を再現できることを確認してください。

検証環境:python:3.11

再現コマンド
pip install requests 2>&1 | head -20 || true
# Simulate the externally-managed-environment error by placing a EXTERNALLY-MANAGED marker
mkdir -p /usr/local/lib/python3.11
touch /usr/local/lib/python3.11/EXTERNALLY-MANAGED
pip install requests 2>&1; true

原因なぜ起きるのか

Python 3.11 以降(および一部の Linux ディストリビューション)では、PEP 668 に基づき、システムの Python 環境をパッケージマネージャ(apt など)が管理していることを示す `EXTERNALLY-MANAGED` マーカーファイルが配置されます。このファイルが存在すると、pip はシステム環境への直接インストールを拒否し、`error: externally-managed-environment` エラーを出します。 根本的な解決策は **仮想環境(venv)を使う** ことです。`python3 -m venv /opt/myenv` で仮想環境を作成し、その中の pip でパッケージをインストールすれば、システム環境を汚染せず、かつ本エラーも回避できます。`--break-system-packages` フラグや `EXTERNALLY-MANAGED` ファイルの削除といった回避策は、システムの Python 環境を壊すリスクがあるため推奨しません。プロジェクトごとに venv を使い分けるのがベストプラクティスです。

解決解決手順

修正コマンド
# The correct fix: use a virtual environment to isolate dependencies
# This is the proper solution recommended by PEP 668
python3 -m venv /opt/myenv
/opt/myenv/bin/pip install requests

確認直ったか確認する

確認コマンド
/opt/myenv/bin/python -c "import requests; print('requests version:', requests.__version__)" && echo 'SUCCESS: package installed correctly in venv'

動画で見る

この記事の解決手順は実環境で検証しています

山田 英紀(社内SE 5年以上・13業種以上の業務システムを開発/運用)が、 掲載コマンドを検証環境で実行し、再現〜解決〜確認まで通ることを確認しています。

この手順でも直らない・自社の環境で再現する場合

エラー調査・修正から、業務システムの改善までご相談いただけます。

無料で相談する

関連する記事