Re: Pip installs to unexpected place

Thomas Passin <[email protected]>
Newsgroups comp.lang.python
Message-ID <[email protected]>
On 4/17/2025 4:58 AM, Roel Schroeven via Python-list wrote:
> Op 15/04/2025 om 20:31 schreef Mats Wichmann via Python-list:
>> To be clear: you do not have to activate a virtualenv to use *Python* 
>> from it. If you just call the python by the path it's in, it figures 
>> everything out (and sets some variables you can query vi sysconfig if 
>> you have reason to actually need those details (look for installation 
>> schemes).
>>
>> What activating gives you is some path fiddling, and some prompt 
>> fiddling (although the prompt fiddling keeps saying it's deprecated). 
>> The latter is a visual clue; the former means you can also find 
>> *other* commands installed in the virtualenv - including pip.
>>
>> /path/to/virtualenv//bin/python -m pip install ...   will work whether 
>> you activated or not.
>>
>> pip install ...  finds the first command in your PATH named pip, which 
>> may or may not be the one in the virtualenv, *unless* you've activated 
>> it, because that's the only way the virtualenv bin directory ends up 
>> early in your path.

Or you can cd to the venv directory and it will be first on the pythonpath.

> And the pip command that is found and run will use it's own settings 
> regarding where to install packages, even if you activated a virtualenv. 
> For example, you can't use /usr/bin/pip to install something in a 
> virtualenv.

pip detects if you are running in a venv and changes its behavior to match.

To install something in a virtualenv, you need to use the
> pip in that virtualenv (either by first activating that venv, or by 
> running something like venv/bin/pip, or venv). (Of course to do that pip 
> needs to be installed in that venv. That might or might not be the case 
> depending on how the venv was created.)
> 
> I kinda get the feeling that something like that is going on here.
> 

IMHO pip should always be run as a module, e.g., python3 -m pip. This 
way you always get the same pip and environment as the python executable 
that is being used.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.