【问题标题】:pass build_ext options to pip install将 build_ext 选项传递给 pip install
【发布时间】:2013-03-21 11:45:40
【问题描述】:

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

【问题讨论】:

    标签: python build installation pip


    【解决方案1】:

    可以使用pip --global-option=build_ext

    例如,这是 requirements.txt 用于支持 PNG 和 JPEG 且没有其他外部库的 Pillow:

    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
    

    【讨论】:

    • 优秀。像魅力一样工作。
    • pip build_ext 目前对我不起作用。
    【解决方案2】:

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

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

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

    【讨论】:

    • 有趣的是,在完全忘记我曾经知道这一点之后,我用谷歌搜索了自己的答案。
    【解决方案3】:

    我在pip 中搜索了此类选项,但没有找到(也搜索了source)。

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 2018-04-22
      • 2012-12-23
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多