2016-06-06 4 views
1

Für meine Python-Paket, ich habe eine setup.py-Datei, wo ich Anforderungen spezifizieren:Warum erfüllt Pip nicht minimale Abhängigkeiten?

install_requires=['numpy>=1.7', 'matplotlib>=1.3'], 

Wenn ich pip verwenden installieren, erkennt es schön, dass ich diese Anforderungen festgelegt haben, und dann geht numpy zu aktualisieren, während meine numpy Version war höher als die erforderliche.

Collecting numpy>=1.7 (from flopy) 
Downloading numpy-1.11.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.9MB) 
Fund existing installation: numpy 1.10.1 
DEPRECATION: Uninstalling a distutils installed project (numpy) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project. 
Uninstalling numpy-1.10.1: 
Successfully uninstalled numpy-1.10.1 

Ich habe mit mehreren Leuten gesprochen und sie berichten alle das gleiche Verhalten. Warum ist das? Wie lege ich die Anforderungsnummer richtig fest?

Danke, Mark

+1

Was Sie tun meinen mit "richtig?" Sie fragen einfach nach einer "numply" Version, die größer als 1,7 ist und der es erfreulicherweise entspricht. – loganasherjones

+1

Nun, die Spezifikation sagt 'numpy> = 1.7', die installierte Version ist 1.10.1, sollte also nicht auf 1.11.0 aufrüsten, denn 1.10.1> = 1.7. Ist das nicht das beabsichtigte Verhalten? –

Antwort

2

pip eine Version von numpy installiert, der größer als 1,7 ist. Welches ist was du angegeben hast. Wenn Sie für eine exakte Übereinstimmung der Version, die Sie suchen möchten, können Sie so etwas wie versuchen:

install_requires=['numpy==1.7', ... ] 

Oder wenn Sie einen bestimmten Bereich festlegen möchten Sie tun können:

install_requires['numpy>=1.7,<1.10' ... ] 
+1

Aber meine Maschine hatte bereits numpy 1.10.1, die größer als 1.7 ist. Ich dachte, dass das Verhalten war, dass, wenn die Version größer ist als die Anforderung, dann wird Pip nicht aktualisieren. Ist das nicht das, was es tun soll? Um genauer zu sein: Ich möchte Setup überprüfen, ob die Version mindestens 1,7 ist und wenn das der Fall ist, dann tue nichts, wenn das nicht der Fall ist, upgrade numpy. Ist das möglich? –

+0

Ich glaube das ist das Verhalten ja. Meine Vermutung mit Ihrem Problem ist dann, dass der Pip, von dem Sie installiert haben (ich weiß nicht, ob Sie sudo oder von einer anderen virtuellen Umgebung verwendeten), nicht wusste, dass numpy 1.10.1 installiert war. – loganasherjones