Есть ли способ передать build_ext
параметры для установки pip для изменения того, как скомпилировано расширение, включенное в пакет? (Да, я знаю, что можно скачать источник и построить/установить с помощью настраиваемого setup.cfg
, но мне любопытно, можно ли передавать параметры, которые могут быть указаны в setup.cfg
напрямую через pip.)
Передать параметры build_ext для установки pip
Ответ 1
Возможно использование pip --global-option=build_ext
.
Например, это requirements.txt
для Pillow с поддержкой 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
, вдохновленное этим ответом, поскольку 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
Ответ 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
и не нашел ее (искал источник).
Я не думаю, что такого параметра в easy_install/setuptools не существует.
Единственное решение, которое я вижу, - путь старой школы:
download / unpack / setup.py build_ext [options] / setup.py install
.