Передать параметры build_ext для установки pip - программирование
Подтвердить что ты не робот

Передать параметры build_ext для установки pip

Есть ли способ передать build_ext параметры для установки pip для изменения того, как скомпилировано расширение, включенное в пакет? (Да, я знаю, что можно скачать источник и построить/установить с помощью настраиваемого setup.cfg, но мне любопытно, можно ли передавать параметры, которые могут быть указаны в setup.cfg напрямую через pip.)

4b9b3361

Ответ 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.