

That step of installing the build tools is where pip might want to download setuptools - the build tool is specified by the project, and traditionally has always been setuptools, but alternatives like flit exist and are used by some projects. If you want to install from source, the first thing pip will do is build the source, which it will do by setting up an isolated environment, installing the build tools in there, and then doing the build. You will be able to install wheels, definitely. See if I can successfully install things with pip if setuptools is not installed. TL DR: what’s the recommended way to bootstrap pip if I need a specific version (reproducibility) and a stable download checksum (security)? When looking at get-pip.py, I don’t see a version-specific URL, so I assume the checksum of this download changes after every new release? We also need a stable checksum for any downloads. Spack is designed for air-gapped systems without internet access, so we need to be able to download the appropriate source code ahead of time. I’ve read through pip’s installation instructions, but I don’t see a way to specify which version of pip gets installed with either ensurepip or get-pip.py. In order to convert our Python build system to use pip instead, we first need to figure out how to bootstrap pip. However, we were recently informed that direct invocation of setup.py is now deprecated.

This made it easy to install libraries like setuptools/wheel/pip without having to rely on an existing pip installation. In the past, our Python library installation procedure was basically: $ python setup.py build

Spack is a general-purpose package manager, similar to Conda in the sense that it can build both Python and non-Python libraries. Hi, I’m a developer for the Spack package manager.
