build_ext
オプションをpipinstallに渡して、パッケージに含まれる拡張機能のコンパイル方法を変更する方法はありますか? (はい、ソースをダウンロードして、カスタムsetup.cfg
でビルド/インストールできることは知っていますが、setup.cfg
で指定できるオプションをpipから直接渡すことができるかどうか知りたいです。 )
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
ホームディレクトリに.pydistutils.cfg
ファイルを作成し、カスタムsetup.cfg
の場合と同じようにビルドオプションを上書きできますが、最初にパッケージを解凍する必要はありません。
したがって、たとえば、次のように記述して、include&lib検索パスを変更できます。
[build_ext]
include_dirs=/usr/local/include
library_dirs=/usr/local/lib64
rpath=/usr/local/lib64
pip
でそのようなオプションを検索しましたが、何も見つかりませんでした( source も検索しました)。
easy_install/setuptools にもそのようなオプションはないと思います。
私が見る唯一の解決策は、昔ながらの方法です。
download / unpack / setup.py build_ext [options] / setup.py install
。