Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #197418

Re: Pip installs to unexpected place

From Thomas Passin <list1@tompassin.net>
Newsgroups comp.lang.python
Subject Re: Pip installs to unexpected place
Date 2025-04-18 13:08 -0400
Message-ID <mailman.22.1745016497.3008.python-list@python.org> (permalink)
References (7 earlier) <6d1ac10c-80c0-484b-a7e7-e1966cea1b5d@wichmann.us> <mailman.19.1744926071.3008.python-list@python.org> <m6dnueFg8f0U1@mid.individual.net> <20250418153848.w2hmxpegl3uwii3w@hjp.at> <e1cce2f7-e59b-42bb-95ee-602f241f545b@tompassin.net>

Show all headers | View raw


On 4/18/2025 11:38 AM, Peter J. Holzer via Python-list wrote:
> On 2025-04-18 13:24:28 +1200, Greg Ewing via Python-list wrote:
>> On 18/04/25 9:41 am, Mats Wichmann wrote:
>>> There's just not a really great answer to this.
>>
>> Seems to me a system-installed application shouldn't be looking in the
>> user's .local packages in the first place. That should only be for things
>> the user has installed "for this user".
> 
> It's not the application that looks into .local, it's Python. If you say
> that a system-installed Python shouldn't look into ~/.local, then you've
> just disabled that mechanism completely. If not then Python would
> somehow have to distinguish between system-installed and user-installed
> scripts. This isn't as easy as checking whether the path starts with
> /usr/bin or whether it belongs to root. Tying into the system's package
> manager doesn't look appealing to me (not to mention that it might be
> unacceptably slow).

Let's try a specific example. Let's say that PyQt6 v6.8.3 is installed 
in the system site directory. The OS uses PyQt6 for some system 
purposes. Now the user comes along and forces an install of PyQt6 v6.9.0 
in the user site directory. 6.9.0 has a bug that would crash one of the 
system's application but not the user's programs. (This is not a 
far-fetched scenario).

When the system launches its application the PYTHONPATH will start with 
system site directories; local user site directories will be on the 
PYTHONPATH but since they come later, the python will use PyQt6 v6.8.3 
because that will come first on the path.  No crash here.

If the user has a program that actually does require the use of v6.9.0, 
he's going to have to make sure that the user's local site directories 
come first on the path. One way to do that is to set the PYTHONPATH to 
point to the user's location.

In what scenario is a system application going to load a wrong version 
of a dependency from a user's site location? The only one I can think of 
is for the user, with the help of sudo, or by editing some 
system-enabled script, were to change the global PYTHONPATH.  That seems 
a stretch.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: Pip installs to unexpected place Mats Wichmann <mats@wichmann.us> - 2025-04-17 15:41 -0600
  Re: Pip installs to unexpected place Greg Ewing <greg.ewing@canterbury.ac.nz> - 2025-04-18 13:24 +1200
    Re: Pip installs to unexpected place (Posting On Python-List Prohibited) Lawrence D'Oliveiro <ldo@nz.invalid> - 2025-04-18 02:20 +0000
    Re: Pip installs to unexpected place "Peter J. Holzer" <hjp-python@hjp.at> - 2025-04-18 17:38 +0200
    Re: Pip installs to unexpected place Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2025-04-18 17:11 +0100
    Re: Pip installs to unexpected place Thomas Passin <list1@tompassin.net> - 2025-04-18 13:08 -0400
    Re: Pip installs to unexpected place "Peter J. Holzer" <hjp-python@hjp.at> - 2025-04-19 10:38 +0200
    Re: Pip installs to unexpected place "Peter J. Holzer" <hjp-python@hjp.at> - 2025-04-19 10:56 +0200
      Re: Pip installs to unexpected place songbird <songbird@anthive.com> - 2025-04-19 07:49 -0400
    Re: Pip installs to unexpected place Thomas Passin <list1@tompassin.net> - 2025-04-19 15:56 -0400
      Re: Pip installs to unexpected place rbowman <bowman@montana.com> - 2025-04-20 04:34 +0000

csiph-web