Why is my venv using a different pip version than I have installed

Question:

I’m setting up virtual env. I was getting warnings about an outdated pip (19.2) so I updated pip on my (macos) system globally, sudo -H python3 -m pip install --upgrade pip. It seems to have worked, but when I make a new venv, I’m still getting the old pip version.

% pip --version           
pip 20.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% python3 -m pip --version
pip 20.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% rm -rf .venv # make sure
% python3 -m venv .venv   
% . .venv/bin/activate    
(.venv)     % python3 -m pip --version
pip 19.2.3 from /Users/marvin/.venv/lib/python3.8/site-packages/pip (python 3.8)
(.venv)     % pip --version           
pip 19.2.3 from /Users/marvin/.venv/lib/python3.8/site-packages/pip (python 3.8)

Where is the older version coming from?

Asked By: Marvin

||

Answers:

Pip is installed anew in any freshly created venv. The venv’s default pip version is associated with the Python version, and is completely independent from whatever pip version you may have installed on the system. The older version comes from a wheel file bundled with the stdlib ensurepip module. This allows users to create a venv even with no internet connection available, as the venv docs mention:

Unless the --without-pip option is given, ensurepip will be invoked to bootstrap pip into the virtual environment

You can check the bundled pip version with ensurepip.version:

>>> import ensurepip
>>> ensurepip.version()
'19.2.3'

Python 3.8.2 is vendoring pip 19.2.3 and setuptools 41.2.0, matching what you’ve seen.

To create venvs directly with the latest pip version, rather than creating them with an older pip and then upgrading the pip version, refer to this answer:

How to get “python -m venv” to directly install latest pip version

Answered By: wim

a better solution:

virtualenv –upgrade-embed-wheels

Answered By: Jan
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.