2013-03-31 14 views
16

Czy jest jakiś sposób przekazania build_ext opcji instalacji pip, aby zmienić sposób kompilacji rozszerzenia zawartego w pakiecie? (Tak, wiem, że można pobrać źródło i zbudować/zainstalować z niestandardowym setup.cfg, ale jestem ciekawy, czy można przekazać opcje, które można określić w setup.cfg bezpośrednio przez pip.)przekazać opcje build_ext do instalacji pip

Odpowiedz

2

Szukałem taka opcja w pip i nie znalazła żadnej (przeszukiwano również source).

Nie sądzę, że nie ma takiej opcji również w easy_install/setuptools.

Jedynym rozwiązaniem widzę to sposób starej szkoły:

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

8

Możesz utworzyć plik .pydistutils.cfg w swoim katalogu domowym i zastąpić opcje kompilacji, tak jak można zrobić z niestandardowym setup.cfg, ale bez konieczności rozpakowywania pakietu w pierwszej kolejności.

Tak więc, na przykład, można napisać coś podobnego do zmiany obejmują & lib ścieżkę przeszukiwania:

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

zabawne, że mam google moją własną odpowiedź po całkowicie zapominając kiedyś o tym wiedział. – toriningen

9

jest to możliwe przy użyciu pip --global-option=build_ext.

Na przykład to requirements.txt na poduszkę PNG i JPEG wsparcia i bez innych bibliotek zewnętrznych:

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" 

to naprawdę nadużyciem pip --global-option zainspirowani this answer, jak build_ext jest polecenie pip i nie bardzo globalna opcja pip. Ale byłoby to zrobić pip wykonać dwa polecenia - pierwsze build_ext a następnie install - tak:

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 
+0

Doskonały. Działa jak urok. –

Powiązane problemy