将build_ext选项传递给pip install

时间:2013-03-31 02:55:44

标签: python build install pip

有没有办法将build_ext个选项传递给pip install来改变包中包含的扩展名的编译方式? (是的,我知道可以下载源代码并使用自定义setup.cfg进行构建/安装,但我很好奇是否可以直接通过pip传递可以在setup.cfg中指定的选项。 )

3 个答案:

答案 0 :(得分:10)

您可以在主目录中创建.pydistutils.cfg文件并覆盖构建选项,就像使用自定义setup.cfg一样,但无需先解压缩包。

因此,例如,您可以编写类似这样的内容来改变include& lib搜索路径:

[build_ext]
include_dirs=/usr/local/include
library_dirs=/usr/local/lib64
rpath=/usr/local/lib64

答案 1 :(得分:10)

可以使用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执行两个命令 - 先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

答案 2 :(得分:2)

我在pip中搜索了此类选项但未找到(也在source搜索过)。

我认为easy_install/setuptools中也没有这样的选择。

我看到的唯一解决方案是老派的方式:

download / unpack / setup.py build_ext [options] / setup.py install