pass build_ext options to pip install
build, installation, pip, python
Solution
It's possible using `pip --global-option=build_ext`.
For example this is `requirements.txt` for Pillow with PNG and JPEG support and no other external libraries:
pillow \
--global-option="build_ext" \
--global-option="--enable-zlib" \
--global-option="--enable-jpeg" \
--global-option="--disable-tiff" \
--global-option="--disable-freetype" \
--global-option="--disable-tcl" \
--global-option="--disable-tk" \
--global-option="--disable-lcms" \
--global-option="--disable-webp" \
--global-option="--disable-webpmux" \
--global-option="--disable-jpeg2000"
This is really an abuse of `pip --global-option`, inspired by this answer, as `build_ext` is a pip command and not really a global pip option. But this would make pip to execute two commands — first `build_ext` and then `install` — like this:
pip \
build_ext \
--enable-zlib --enable-jpeg \
--disable-tiff --disable-freetype --disable-tcl --disable-tk \
--disable-lcms --disable-webp --disable-webpmux --disable-jpeg2000 \
install pillow
Problem
Is there some way to pass `build_ext` options to pip install to alter how an extension included in a package is compiled? (Yes, I know that one can download the source and build/install with a custom `setup.cfg`, but I'm curious whether it is possible to pass options that can be specified in `setup.cfg` directly through pip.)