@enkero

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pip3でグローバルインストールがしたい

解決したいこと

pip 25.0.1でパッケージをグローバルインストールしようとするとエラーが出ます。
エラーメッセージにbreak-system-packagesを設定しろと書いてありますが、
これをしたらグローバルインストールができるようになるのでしょうか?
また、これは設定して大丈夫なものなのでしょうか

初心者質問で申し訳ありません…

発生している問題・エラー

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:
    
    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz
    
    If you wish to install a Python application that isn't in Homebrew,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. You can install pipx with
    
    brew install pipx
    
    You may restore the old behavior of pip by passing
    the '--break-system-packages' flag to pip, or by adding
    'break-system-packages = true' to your pip.conf file. The latter
    will permanently disable this error.
    
    If you disable this error, we STRONGLY recommend that you additionally
    pass the '--user' flag to pip, or set 'user = true' in your pip.conf
    file. Failure to do this can result in a broken Homebrew installation.
    
    Read more about this behavior here: <https://peps.python.org/pep-0668/>

該当するソースコード

pip3 install xyz

自分で試したこと

仮想環境を使えばインストールできることは確認済みです。
pipxは調べてみましたが自動で仮想環境を作るものらしいので違うようです。

0 likes

2Answer

TL;DR(要約)

可能ですが、お勧めできません。以下のどれかを行ってください。

  • 仮想環境を利用する
  • Homebrewで管理する(brew install xyz
  • pipx でインストールする

理由

Python は OS や各種システムツールでも利用されており、グローバルパッケージを更新すると、それを使用しているシステムがエラーを起こす可能性があります。
たとえば、以前のバージョンでは存在した関数が削除されてしまい、システムコマンド実行時にエラーが発生する、と言ったものです。

また、新規パッケージをグローバルにインストールすると、そのパッケージが依存するライブラリもまとめて更新されます。
たとえば、最新の pandas をインストールすると、内部で利用されている numpy もアップデートされ、既存の古い numpy が上書きされます。
これは結局、上述の問題を引き起こします。

このような事態を防ぐために、pipはデフォルトではパッケージのグローバルインストールを許可していないのです。

一方で、仮装環境やHomebrewは、システムが使用するものとは別の場所にパッケージをインストールするため、この問題を回避できます。これが、冒頭の解決策が機能する理由です。

これらを理解した上で、どうしてもグローバルにインストールしたい場合は、以下のオプションを指定することができます。

pip install --break-system-packages --user <パッケージ名>

参考

0Like

break-system-packagesを設定しろと書いてありますが、
これをしたらグローバルインストールができるようになるのでしょうか?

その認識で合ってますが、グローバルレベルでインストールしてしまうと他のパッケージ管理と衝突は避けられないので使い捨てコンテナ環境でも無いかぎりするべきではない

仮想環境を使えばインストールできることは確認済みです

そちらが成功してるなら、なぜ仮想環境を使わないのか…

0Like

Your answer might help someone💌