【Python】pip installでexternally-managed-environmentエラーの対処法
Chromebookでpipコマンドを使うと以下のエラーが発生したので対処法について書きます。尚、Ubuntuでも同じ現象が起きたことがあるのでChromebookに限った話ではありません。
以下の例はgoogle-generativeaiのインストールしようと思った際に発生したものです。
$ pip install google-generativeai
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
なぜこんなエラーが??
このエラーメッセージ は、最近のDebianベースのシステム(Ubuntu 23.04以降など)で導入された新しいセキュリティ機能によるものです。
システムにインストールされているPython環境を保護し、pipによるシステム全体のパッケージインストールがシステムパッケージと競合するのを防ぐためのものです。
エラーメッセージが示すように、この問題の最も推奨される解決策は、仮想環境 (virtual environment) を使用することです。これにより、システムに影響を与えることなく、プロジェクト固有のPythonパッケージをインストールできます。
仮想環境は面倒だと思う人のための対処法
–break-system-packages オプションを使用する(非推奨)
最も直接的な方法は、pip コマンドに –break-system-packages オプションを追加することです。これは、システムがPython環境を管理していることを示す警告を無視し、強制的にインストールを行うためのオプションです。
$ pip install google-generativeai --break-system-packages
OSが管理しているPythonパッケージと pip でインストールしたパッケージが競合し、システム上のPythonアプリケーションが正常に動作しなくなる可能性があるので注意です。
–user オプションを使用する(システム全体よりは安全だが、推奨度は低い)
–user オプションを使用すると、パッケージはシステム全体のPython環境ではなく、現在のユーザーのホームディレクトリ内(通常は ~/.local/lib/pythonX.Y/site-packages のような場所)にインストールされます。これにより、システム全体のPython環境への影響は軽減されます。
$ pip install google-generativeai --user
ユーザーレベルとはいえ、複数のプロジェクトが同じユーザー環境の同じパッケージを参照するため、依存関係の競合が発生する可能性は残ります。
スポンサーリンク