Wie man --break-system-packages in pip automatisch setzt

Problem

Wenn Sie Python-Pakete mit pip installieren, sehen Sie auf neueren Versionen von Debian oder Ubuntu die folgende Warnung:

setup.txt
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.

Lösung

Sie könnten es richtig machen (pipx oder ähnliche Tools verwenden), aber da Sie diesen Beitrag lesen, nehme ich an, Sie möchten die Warnung einfach loswerden, ohne --break-system-packages jedes Mal anzugeben, wenn Sie pip aufrufen.

Um dies zu erreichen, führen Sie das folgende Shell-Skript als der Benutzer aus, als der Sie pip ausführen:

set_pip_break_system_packages.sh
mkdir -p ~/.config/pip
echo "[global]" >> ~/.config/pip/pip.conf
echo "break-system-packages = true" >> ~/.config/pip/pip.conf

Danach wird pip automatisch --break-system-packages jedes Mal verwenden, wenn Sie es ausführen. Das heißt, es wird sich so verhalten, wie Sie es erwartet haben.


Check out similar posts by category: Python