2017-06-23 5 views
3

Ich versuche, pip zu installieren numpy aus verschiedenen Quellen entsprechend der Plattform des Benutzers. Ich versuche das zu erreichen, indem ich den "platform_system" -Umgebungsmarker verwende.Bedingte Installation einer Raddatei mit pip

# requirements.txt 

# installing from a local wheel file 
/python35/wheels_repo/numpy-1.12.0.whl;platform_system == "Linux" 
# installing from PyPi 
numpy==1.12.0;platform_system == "Windows" 

Es funktioniert gut, wenn ich auf Linux bin, aber wenn ich auf Windows pip sucht nach der Datei bin - die nicht einmal einen richtigen Dateipfad unter Windows hat - auch wenn es durch „platform_system geschützt ist ".

Requirement '/python35/wheels_repo/numpy-1.12.0.whl' looks like a filename, but the file does not exist 

Die Installation stoppt dann.

Gibt es eine Möglichkeit, Pip nicht zu dieser Datei suchen oder zumindest die Installation fortsetzen, wenn die Datei nicht gefunden wird?

Antwort

0

Ich glaube, pip wird immer auf die Existenz der Datei prüfen. Und diese Überprüfung wird vor der Überprüfung der Installationsanforderungen durchgeführt (d. H. Wenn Umgebungsmarkierungen übereinstimmen).

Was Sie jedoch tun können, ist pip setzen Sie die Installation fort, wenn die Datei nicht gefunden wird.

einfach Ihre Anforderung von ändern:

/python35/wheels_repo/numpy-1.12.0.whl;platform_system == "Linux" 

zu:

--find-links "file:///python35/wheels_repo/" numpy-1.12.0.whl;platform_system == "Linux" 

Mit --find-Links pip wird dann ein anderen Steuerungsablauf eingeben, wo der URI zu einem späteren Zeitpunkt ausgewertet wird und nur Eine Warnung wird ausgegeben, wenn sie ungültig ist oder wenn die Ressource nicht gefunden wird.

EDIT:

Ich habe erkannt, dass --find-Links nicht mit einzelnen Anforderungen in einem requirements.txt funktioniert.

Da Sie nicht einfach verschiedene Pakete für jede Plattform installieren, sondern für jede Plattform unterschiedliche Pakete aus verschiedenen Quellen installieren, würde ich vorschlagen, die plattformspezifischen Anforderungen in verschiedene Dateien zu trennen (zB: anforderungs_Windows.txt und anforderungen_Linux). txt) und "pip install -r" auf jeder Plattform anders ausgeführt.

Unter Windows können Sie eine lokale Paket-Repository mit d pip2pi gebaut haben und dann laufen:

pip install --extra-index-url file://[path-to-your-local-package-repository]/simple -r requirements_Windows.txt