web-dev-qa-db-ja.com

build_extオプションをpipinstallに渡します

build_extオプションをpipinstallに渡して、パッケージに含まれる拡張機能のコンパイル方法を変更する方法はありますか? (はい、ソースをダウンロードして、カスタムsetup.cfgでビルド/インストールできることは知っていますが、setup.cfgで指定できるオプションをpipから直接渡すことができるかどうか知りたいです。 )

21
lebedov

pip --global-option=build_extを使用して可能です。

たとえば、これはPNGおよびJPEGをサポートし、他の外部ライブラリを備えていないPillowの場合はrequirements.txtです。

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はpipコマンドであり、実際にはグローバルpipオプションではないため、これは実際にはbuild_extの悪用であり、 この回答 に触発されています。ただし、これにより、pipは次のように2つのコマンド(最初は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
13
Tometzky

ホームディレクトリに.pydistutils.cfgファイルを作成し、カスタムsetup.cfgの場合と同じようにビルドオプションを上書きできますが、最初にパッケージを解凍する必要はありません。

したがって、たとえば、次のように記述して、include&lib検索パスを変更できます。

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

pipでそのようなオプションを検索しましたが、何も見つかりませんでした( source も検索しました)。

easy_install/setuptools にもそのようなオプションはないと思います。

私が見る唯一の解決策は、昔ながらの方法です。

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

2
Robert Lujo