有没有办法将 build_ext
选项传递给 pip install 以改变包中包含的扩展的编译方式? (是的,我知道可以下载源代码并使用自定义 setup.cfg
构建/安装,但我很好奇是否可以传递可以在 setup 中指定的选项.cfg
直接通过 pip。)
最佳答案
可以使用 pip --global-option=build_ext
。
例如,这是 Pillow 的 requirements.txt
,支持 PNG 和 JPEG,没有其他外部库:
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"
这确实是对 pip --global-option
的滥用,灵感来自 this answer ,因为 build_ext
是一个 pip 命令,而不是真正的全局 pip 选项。但这会使 pip 执行两个命令——首先是 build_ext
,然后是 install
——就像这样:
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
https://stackoverflow.com/questions/15725869/