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?
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With