Linux の場合、pip でなにかライブラリーをインストールしようとすると次のようなエラーメッセージが出て、インストールできません。
基本的にオプションのライブラリはシステムインストールできないので、仮想環境にインストールせよということになっているようです。で通常の方法だと Python の venv コマンドを使って仮想環境を作りそこにインストールするようです。
例えば、あるディレクトリで次のようにコマンドを打ち込みます。
python3 -m venv .venv
この場合カレントディレクトリに下に、.venv というディレクトリが作られそこに仮想環境が作られます。例えばホームディレクトリでこのコマンドを打てば、
$HOME/.venv というディレクトリに仮想環境が作られます。
したがってカレントディレクトリを変えれば複数の仮想環境が作られます。
この仮想環境を有効した Python を起動したい場合は、当該カレントディレクトリ上で、
source .venv/bin/activate
と打ち込み、Python3 コマンドを打ち込めば、当該仮想環境を使った Python インタープリタが起動します。仮想環境を無効にするときは、
deactivate
とコマンドを打ちます。
因みにこの仮想環境が有効になったとき使われるインタープリタの位置は、
.venv/bin/python3
になります。但しこの python3 コマンドはシステムインストールされている python3 インタープリンタへのエイリアスになるので、仮想環境の下に実際にインタープリタ関連バイナリーファイルがぞろぞろとインストールされるわけではありません。
しかし、オプションライブラリに関してはこの下にインストールされます。例えば、numpy を仮想環境を有効にした状態で、pip でインストールしてみたら (pip install numpy)、以下のような位置にインストールされました(但し、仮想環境の位置が $HOME/.venv の場合)。
$HOME/.venv/bin/f2py
$HOME/.venv/bin/numpy-config
$HOME/.venv/lib/python3.12/site-packages/numpy-2.1.2.dist-info/*
$HOME/.venv/lib/python3.12/site-packages/numpy.libs/libgfortran-040039e1-0352e75f.so.5.0.0
$HOME/.venv/lib/python3.12/site-packages/numpy.libs/libquadmath-96973f99-934c22de.so.0.0.0
$HOME/.venv/lib/python3.12/site-packages/numpy.libs/libscipy_openblas64_-ff651d7f.so
$HOME/.venv/lib/python3.12/site-packages/numpy/*
-----
次に pipx というコマンドも使えるというので、これを使ってインストールしてみました。pipx を使うと、無条件に以下に仮想環境が作成され、その下にライブラリがインストールされるようです。
$HOME/.local/pipx/venvs
そして、Python3 コマンドは以下となります。
$HOME/.local/bin/python3
やはりシステムインストールした Python3 へのエイリアスになるようです。
----
最後に強制的にシステムインストールを行った場合です。
$ pip install numpy --break-system-packages
で、numpy をインストールしてみます。
この場合、python3 はシステムインストールしたインタープリタが使われます (それは結局仮想環境を使っても同じなのですが...)。
これで、numpy はどこにあるかと言うと...
$HOME/.local/bin/f2py
$HOME/.local/bin/numpy-config
$HOME/.local/lib/python3.12/site-packages/numpy-2.3.2.dist-info/*
$HOME/.local/lib/python3.12/site-packages/numpy.libs/libgfortran-040039e1-0352e75f.so.5.0.0
$HOME/.local/lib/python3.12/site-packages/numpy.libs/libquadmath-96973f99-934c22de.so.0.0.0
$HOME/.local/lib/python3.12/site-packages/numpy.libs/libscipy_openblas64_-8fb3d286.so
$HOME/.local/lib/python3.12/site-packages/numpy/*
結局、$HOME/.local/bin/ 以下にインストールされるということのようです。この方法でも、実際にはシステムインストールされるのではなく、ユーザインストールになるようです。
----------------
[参考サイト]