Terminal Emulator (Posting On Python-List Prohibited)

Gordinator gordinator at gordinator.org
Mon May 20 14:43:08 EDT 2024


On 20/05/2024 10:58, Peter J. Holzer wrote:
> On 2024-05-20 00:26:03 +0200, Roel Schroeven via Python-list wrote:
>> Skip Montanaro via Python-list schreef op 20/05/2024 om 0:08:
>>>> Modern debian (ubuntu) and fedora block users installing using pip.
>>>
>>> Even if you're telling it to install in ~/.local? I could see not allowing
>>> to run it as root.
>>
>> I assumed pip install --user would work, but no. I tried it (on Debian 12
>> (bookworm)):
>>
>>> $ pip install --user docopt
>>> 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.
>>> hint: See PEP 668 for the detailed specification.
>>
>> Exactly the same output for sudo pip install.
> 
> This message (quoted in all its glory) is too long to be useful. The
> important bit is at the end:
> 
>>> You can override this, at the risk of breaking your Python
>>> installation or OS, by passing --break-system-packages.
> 
> (I admit I didn't see this the first time I got this message)
> 
> python3 -m pip install --user --break-system-packages <packagename>
> does indeed install into ~/.local/lib/python3.XX/site-packages.
> 
> This inconvenient, but otoh I have accidentally installed packages into
> ~/.local in the past, so maybe it's good to make that more explicit.
> 
>          hp
> 

Perhaps an alias like so:

$ alias 'pip install'='pip install --user --break-system-packages'

Would work here? Someone please advise if that is a good idea.


More information about the Python-list mailing list