HomebrewでPythonを入れたのに、pip installがエラーで止まる…。その原因は“externally-managed-environment”という仕様にありました。Apple Siliconでの正しい対処法を解説します。
前回の記事では、Apple Silicon MacにIntel版のHomebrewをRosetta経由で入れてしまったことが原因で、PATHが思うように通らなかったり、Pythonのバージョンが意図しないものになってしまうといったトラブルについて紹介しました。
前回の記事:【失敗談あり】M3 MacにHomebrewでPythonを入れてハマった話【RosettaとHomebrewの罠】
その問題を整理し、HomebrewをApple Silicon向けに正しくインストールし直したことで、ようやく which python3 が /opt/homebrew/bin/python3 を指すようになり、環境としてはひと安心。…かと思いきや、次の関門が待っていました。
それが、pip install flet を実行したときに表示された、謎のエラーメッセージ:
error: externally-managed-environment
私自身「えっ、pip installって普通にできるんじゃないの?」と思っていたので、いきなりこのエラーが出てきてびっくりしました。あんなに頑張って環境整えたのに。。。
でも実はこれ、調べてみるとHomebrewでインストールしたPython特有の仕様変更によるもので、最近のpipは“そのままではグローバルにパッケージをインストールさせてくれない”ようになっているみたいです。
この記事では、この“externally-managed-environment”エラーの正体と、Apple Silicon環境での正しいpipの使い方について、実体験を交えて解説していきます。
【この記事で分かること】
・externally-managed-environment エラーの意味と発生理由
・Homebrew環境で pip install が制限される背景(PEP 668)
・エラーを回避する3つの方法と、それぞれの使いどころ
・仮想環境(venv)を使って安全にパッケージをインストールする手順
・VS Codeと連携した快適な開発環境の整え方
“externally-managed-environment”エラーとは?
環境が整って、python3 も pip も使えるようになった。
あとは pip install flet を実行するだけ…と思った矢先、私は次のようなエラーメッセージに直面しました。
pip install flet
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try brew install xyz...
最初は「pipが壊れた?」と思いましたが、調べてみるとこのエラーは仕様変更による“正常な動作”であることが分かりました。
🔍 このエラーの正体は「PEP 668」
このエラーは、Python 3.11以降で採用されたPEP 668 によるものです。
PEP 668は、OSやパッケージ管理システム(例:Homebrew)が管理するPython環境において、pipによる直接的なパッケージインストールを防ぐための仕様です。
具体的には、環境内に EXTERNALLY-MANAGED ファイルが存在する場合、pipはグローバルへのインストールを拒否し、「externally-managed-environment」エラーを出すようになりました。
これにより、ユーザーが意図せずシステムや他のツールの整合性を壊すことを防げます。
仮想環境を使うことでこの制限を回避できます。
(一部要約、抜粋)
PEP 668の目的は、外部ツール(たとえばHomebrew)によって管理されているPython環境に、pipで直接パッケージを入れて環境を壊してしまうことを防ぐことです。
HomebrewでインストールされたPythonは、まさにこの「外部管理された環境」に該当します。
そのため、pipは「ちょっと待って、それここに入れていいの?」と、あえて止めてくれているのです。
🧠 pipが悪いわけじゃない:むしろ“親切なブレーキ”
この仕様変更は、最初は不便に感じるかもしれませんが、実は次のようなトラブルを未然に防いでくれます:
- Homebrewとpipがバージョン管理で衝突する
- brew upgrade 後に依存関係が壊れる
- システム全体に意図しないパッケージがインストールされる
つまり、このエラーは「pipが使えない」のではなく、pipが“気を利かせて止めてくれている”んです。
💡 これからは「pipの使い方」をちょっと変えるだけでOK
pip自体は悪くない。問題なのは使う場所(=環境)です。
この記事では、次のセクションから、以下のような対処法を解説していきます:
- 仮想環境を使ってpip installする方法(最もおすすめ)
- –break-system-packages オプションの意味とリスク
- pipxという選択肢について
これを読めば、「pip installできない問題」は必ず解決できます。
実際に仮想環境を使ってfletをインストールしてみた
pipの仕様が変わった今、一番安心でトラブルの少ない方法が「仮想環境を使ってpip installすること」です。
私もこの方法に切り替えることで、ようやくfletを無事にインストールできるようになりました。
以下、私が実際に行った手順とそのポイントを紹介します。
🛠️ ① 仮想環境(venv)を作る
まず、プロジェクト用のディレクトリを作成して、venv という仮想環境を構築します。
mkdir flet-app
cd flet-app
python3 -m venv .venv
ここで .venv フォルダが作成され、その中に独立したPython環境が用意されます。
🌀 ② 仮想環境を有効化する
次に、仮想環境を有効化します。このステップを忘れるとpipはシステム側を使ってしまうので要注意です。
source .venv/bin/activate
※ この時、.venv/bin/activate: No such file or directory のようなエラーが出る場合は、仮想環境を .venv ではなく venv で作っている可能性があるので、フォルダ名を確認して再試行しましょう。
有効化されると、プロンプトが (venv) または (.venv) のように変わります。
📦 ③ pip installでfletをインストール
仮想環境の中で、いつも通り pip install を実行すればOKです。
pip install flet
ここまで来ると、あの“externally-managed-environment”エラーはもう出ません。
無事にインストールされたことが確認できました。
✅ ④ 確認&補足
which python3
# => /Users/ユーザー名/パス/flet-app/.venv/bin/python3
pip show flet
# → flet のバージョンやインストール先が表示される
このように、仮想環境を使えば、Homebrewが管理しているシステムのPythonには一切手を触れずに、自由にpip installができるようになります。
このあと、VS Codeとの連携まで進めれば、快適な開発環境が整います。
次のセクションでその設定方法を紹介します。
VS Codeで仮想環境を使うには?
仮想環境を作ってpip installまでは完了したものの、開発を進めるにはエディタ上でもその仮想環境を正しく使う必要があります。
私はVS Codeを使っているので、ここではVS Code上で仮想環境を設定する方法を紹介します。
🧭 ① Pythonインタープリターを選択する
仮想環境を使う最初のステップは、VS Codeが使うPythonインタープリターを変更することです。
1.VS Codeでプロジェクトフォルダ(例:flet-app)を開く
2.Ctrl + Shift + P(または Cmd + Shift + P)でコマンドパレットを開く
3.Python: Select Interpreter を入力・選択

.venv/bin/python など、プロジェクト内の仮想環境を選ぶ

※ 仮想環境をまだ作っていないと選択肢に出てきません。
選択が完了すると、右下のステータスバーに仮想環境名が表示されます。

💻 ② ターミナルで仮想環境を有効化する(自動化されない場合)
VS Codeのターミナルが自動で仮想環境を有効化してくれない場合は、手動で以下を実行します:
source .venv/bin/activate
これで (venv) のような表示になれば、ターミナルでも仮想環境が有効になった状態です。
⚙️ ③ .vscode/settings.jsonにインタープリターを明示(再現性アップ)
VS Codeでは、プロジェクトごとの設定を .vscode/settings.json に保存できます。以下を追加すると、再起動後も自動で仮想環境が選択されるようになります:
{
"python.defaultInterpreterPath": ".venv/bin/python"
}
これを設定しておくと、他のエディタやターミナルで開いたときも、環境がブレにくくなります。
✅ うまく設定できているか確認するには
以下のコマンドで、仮想環境のPythonとpipが使われていることをチェックできます:
which python
# → /Users/xxx/flet-app/.venv/bin/python
which pip
# → /Users/xxx/flet-app/.venv/bin/pip
これらが .venv 配下を指していればOKです!
VS CodeはPythonとの相性がとても良いですが、インタープリター設定や仮想環境の有効化がうまくいかないと、せっかくの環境が活かせません。
今回のように、.venv を使って構成すれば、トラブルも少なく快適に開発を進められるはずです。
まとめ – Apple Silicon時代のpip運用のベストプラクティス
今回の記事では、pip install を実行したときに表示された「externally-managed-environment」というエラーの意味と、Apple Silicon環境での正しい対処法について、私自身の体験をもとに紹介してきました。
このエラー、最初は戸惑いますが、実は「環境を壊さないように守ってくれている」親切な仕様です。そして、その背景には、Homebrewとpipの役割がはっきり分かれ始めた現代のPython運用事情があります。
✅ 記事のポイントまとめ
- HomebrewでインストールしたPythonは“外部管理下”とみなされ、pip installが制限される(PEP 668)
- エラーを回避するには仮想環境(venv)を使うのがベスト
- –break-system-packages は可能だけど非推奨。緊急時のみに
- CLIツールなら pipx を使う選択肢もある
- VS Codeと仮想環境を連携すれば、開発環境としても快適!
私自身、環境構築で遠回りしてしまった経験を経て、ようやく「Homebrew + 仮想環境 + VS Code」で安定かつ再現性のある構成を構築することができました。
コメント