Skip to content

pip prevents installing packages with just explicit --user and forces to add --break-system-packages #123627

@vadimkantorov

Description

@vadimkantorov

Bug report

Bug description:

I was trying to install packages to ~/.local, but pip (installed via apt install python3-pip as ensurepip/pip are not included with python distribution on Ubuntu 24.04) refuses to proceed without using --break-system-packages which is a bit weird wording. I get that it's trying to push everyone to use venv, but the wording is a bit strange. I perceive system packages as those installed in /usr/lib and other system locations. It appears that pip refers to ~/.local-installed packages also as system packages.

I propose that explicit --user switch be sufficient for proceeding with install

$ python -m pip install --user torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
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.

(adding --break-system-packages helped and the packages were installed to ~/.local as expected)

CPython versions tested on:

3.12

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions