Open paugier opened 1 week ago
Since the issue seems very much related to caching, I wonder if options to provide finer grained control of the cache of locally built wheels would address the use case too.
I agree with @sbidoul here. I would prefer to see this named in a way that makes it clear that it's about using the cache. So something like --no-build-cache PKG
(with the usual :all:
keyword to disable all build cache use) would work better for me.
The invocation would then be:
pip install fluidsim[mpi] --no-build-cache mpi4py --no-build-cache pyfftw --no-build-cache h5py
For me, --rebuild
sounds too much like it would also rebuild an already-installed copy of the package.
What's the problem this feature will solve?
I try to split issue https://github.com/pypa/pip/issues/12954 in smaller and more tractable issues.
As discussed in detailed in https://github.com/pypa/pip/issues/12954, the option
--no-binary
was used in particular for HPC to rebuild a package from source with different build arguments or different libraries (for example hdf5 sequential/parallel, or openMPI/MPICH).However, since 23.1 (https://pip.pypa.io/en/stable/news/#v23-1), "--no-binary does not disable the cache of locally built wheels anymore. It only means “don’t download wheels”. (https://github.com/pypa/pip/issues/11453)".
As pointed out here, web documentation and supercomputer tutorials still use
--no-binary
for this purpose because of the old behavior (before 23.1) and the misleading name of this option (--no-binary
only means “don’t download wheels”).For this purpose ("reinstall a package from source"), one now needs to run things like:
Such commands are quite ugly, long and error prone. Note the "pyFFTW" and "fluidfft_fftwmpi", whereas the packages are named pyfftw and fluidfft-fftwmpi (https://github.com/pypa/pip/issues/13086).
Describe the solution you'd like
I propose to add a
--rebuild
option so that(re)installs pyfftw from source (no wheel at all).
It seems to me that it would be convenient to be able to use
--rebuild
alone (like above, equivalent topip install pyfftw --rebuild pyfftw
) or aslike for
--no-binary
.I think
should be equivalent to
Alternative Solutions
Other name like
--never-binary
could be used.Additional context
Code of Conduct