非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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
 

 

ユーザーレベルとはいえ、複数のプロジェクトが同じユーザー環境の同じパッケージを参照するため、依存関係の競合が発生する可能性は残ります。

 

スポンサーリンク

 - Python