2013-03-31 7 views
16

Gibt es eine Möglichkeit, build_ext Optionen zur Pip-Installation zu übergeben, um zu ändern, wie eine Erweiterung in einem Paket kompiliert wird? (Ja, ich weiß, dass man die Quelle herunterladen und mit einer benutzerdefinierten setup.cfg erstellen/installieren kann, aber ich bin gespannt, ob es möglich ist, Optionen zu übergeben, die in setup.cfg direkt über Pip angegeben werden können.)pass build_ext Optionen zur Pip-Installation

Antwort

2

Ich suchte nach solche Option in pip und keine gefunden (durchsucht auch die source).

Ich glaube nicht, dass es keine solche Option in easy_install/setuptools zu.

Die einzige Lösung, die ich sehe, ist eine Old-School Art und Weise:

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

8

Sie können die Datei .pydistutils.cfg in Ihrem Home-Verzeichnis erstellen und die Build-Optionen überschreiben, wie Sie es mit Custom setup.cfg tun könnten, ohne das Paket zuerst entpacken zu müssen.

So zum Beispiel, können Sie so etwas schreiben umfassen Pfad & lib Suche zu ändern:

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

Lustig, die ich habe meine eigene Antwort googeln bis nach völlig zu vergessen, wenn ich dies wusste. – toriningen

9

es möglich ist, pip --global-option=build_ext verwenden.

Zum Beispiel ist dies requirements.txt für Kissen mit PNG und JPEG-Unterstützung und keine anderen externen Bibliotheken:

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" 

Das ist wirklich ein Missbrauch von pip --global-option, von this answer inspiriert, als build_ext ein Pip-Befehl ist und nicht wirklich eine globale Pip-Option. Aber dies würde pip zwei Befehle auszuführen - erste build_ext und dann install - wie folgt aus:

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

Ausgezeichnet. Funktioniert wie Charme. –

Verwandte Themen