他のディストリビューションだとpython3-pipパッケージをインストールすればvenvなどの仮想環境無しでもpipを使ってPythonパッケージやコマンドをインストールできるが、Ubuntu 24.04は (4/27 訂正: python3-pipパッケージがなくapt-get updateしたらpython3-pipパッケージあった…早とちり) PEP 668をしっかり守るような構成になっている。
あるべきpipの使い方 -> venv使おう
仮想環境をvenvとかで作成すれば普通に使える。
$ python3 -m venv my-env $ . my-env/bin/activate (my-env) $ pip list Package Version ------- ------- pip 24.0
仮想環境外でpipを使いたい場合
ストレートにpipを単体でインストールする。
手順としてはget-pip.pyをダウンロードし、Pythonスクリプトとして実行すれば良いが、前述PEP 668によってエラーになる。
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.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.12/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
このエラーはメッセージに書かれている通り--break-system-packagesを付与して実行すれば「OSのパッケージ管理との競合やシステム管理用Pythonへの影響があるかもしれない」けどそれを無視(つまりPEP 668を無視して)してpipをインストールできる。
rootで実行すれば/usr/local/binへ、ユーザー権限であれば~/.local/binへ入る。
というわけで、 制約と誓約を全て理解した上でシステムワイドにpipをインストールするには以下の通り。
$ curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3 - --break-system-packages Collecting pip Downloading pip-25.1-py3-none-any.whl.metadata (3.6 kB) Downloading pip-25.1-py3-none-any.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 20.1 MB/s eta 0:00:00 Installing collected packages: pip Successfully installed pip-25.1 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. $ which pip /usr/local/bin/pip
インストールできたらあとは普通にpipを実行すればよい…と思いきや、pipを使ったパッケージインストールもPEP 668の影響を受ける。
通常仮想環境外のpipを使ったパッケージは/usr/localや~/.localへインストールされるが、この場合も--break-system-packagesを付与する。(非rootのユーザーディレクトリ以下へのインストールも含む)
$ pip install boto error: externally-managed-environment × This environment is externally managed : :
$ pip install boto --break-system-packages Defaulting to user installation because normal site-packages is not writeable Collecting boto Downloading boto-2.49.0-py2.py3-none-any.whl.metadata (7.3 kB) Downloading boto-2.49.0-py2.py3-none-any.whl (1.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 10.1 MB/s eta 0:00:00 Installing collected packages: boto Successfully installed boto-2.49.0