Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pip install --user doesn't work on Debian 12

Tags:

pip

debian

pipenv

I'm trying to install some packages in my home directory, and I'm unable to do so.

I want to install pipenv, using pip install pipenv --user, but for some reason I'm getting this error:

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.11/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.

Now, I understand that this is supposed to avoid breaking system packages, which are installed by the package manager. What I don't understand is why am I unable to install any package in my home directory?

like image 672
S. Dotto Avatar asked Aug 10 '26 08:08

S. Dotto


2 Answers

As the error message suggests, you can run pip with --break-system-packages:

pip install pipenv --user --break-system-packages

To easiest way to get back the old pre-Debian12 behaviour just for your user, is to add break-system-packages = true in the [global] section of your ~/.config/pip/pip.conf, as noted in /usr/share/doc/python3.11/README.venv:

This can be overriden by passing the --break-system-packages option to pip. You do this at your own risk: pip may break Python modules that part of your Debian system depends on. This option can also be specified by exporting PIP_BREAK_SYSTEM_PACKAGES=1 or configuring the following in ~/.config/pip/pip.conf or /etc/pip.conf:

[global]
break-system-packages = true

See also the final note:

A clean option is to install your own Python (from source) in /usr/local, that isn't EXTERNALLY-MANAGED.

like image 145
Jan Christoph Terasa Avatar answered Aug 11 '26 21:08

Jan Christoph Terasa


I might be a little late to answer but I just ran into the same problem and I checked if pipenv can be installed with apt, turns out that's true. I guess that would be a safer way than using --break-system-packages

like image 38
Priyansh Avatar answered Aug 11 '26 21:08

Priyansh



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!