2016-05-18 18 views
11

Installation habe ich ein Paket mit einer Abhängigkeit der Abhängigkeit zu psutil (my-package hängt von third-party-package die auf psutil abhängt).
Da es auf einem Server ohne Konnektivität und ohne gcc ausgeführt werden soll, bereitete ich die Bereitstellung lokal mit einem psutilpython platform wheel und pip install my-package --download vor, dann schickte alles auf dem Server.Troubles während psutil (Rad) als Abhängigkeit über pip

Jetzt ist alles auf dem Server bereit, aber aus irgendeinem Grund, wenn ich die Installation ausführen, pip weigert sich zu installieren psutil. Beachten Sie, dass es sich bei dem Server um einen Red Hat 7.2 handelt, der pip 7.1.0, virtualenv 1.10.1 und Python 2.7.5 ausführt (und ich kann die Version von nichts ändern).

$ pip install /tmp/python_packages/my-package-1.4.zip --no-index 
    --find-links /tmp/python_packages/ --use-wheel 
Ignoring indexes: https://pypi.python.org/simple/ 

# blablabla, everything goes fine, then 

Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4) 
    Could not find any downloads that satisfy the requirement psutil 
    (from third-party-package>=0.9->my-package==1.4) 
Cleaning up... 
No distributions at all found for psutil (from third-party-package>=0.9->my-package==1.4) 
Storing complete log in /home/anto/.pip/pip.log 

Hier ist, was pip.log sagt:

Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4) 

    URLs to search for versions for psutil (from third-party-package>=0.9->my-package==1.4): 
    # bla 
    Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
    because it is not compatible with this Python 
    # bla 
    Could not find any downloads that satisfy the requirement psutil (from third- 
    party-package>=0.9->my-package==1.4) 

Cleaning up... 

So "nicht mit diesem Python-kompatibel", ok. Aber hier ist der wirklich komische Teil: wenn ich psutil ohne etwas anderes installiere, und dann den Rest, geht alles gut.

$ pip install /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
Unpacking /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
Installing collected packages: psutil 
Successfully installed psutil 
Cleaning up... 
$ pip freeze -l 
psutil==4.2.0 
$ pip install /tmp/python_packages/my-package-1.4.zip --no-index 
    --find-links /tmp/python_packages/ --use-wheel 

# blablabla 

Successfully installed my-package third-party-package 
Cleaning up... 

Was fehlt mir? Irgendeine Ahnung ?

+0

Was ist das Third-Party-Paket? – second

+0

Es ist ein Paket von jemandem in meiner Firma entwickelt. Die setup.py enthält 'install_requires = ['psutil']'; nichts Außergewöhnliches. – Anto

+0

Nicht sicher, ob Sie mehrere Python-Versionen haben, aber in der Datei pip.log verifizieren, dass in beiden Fällen das verwendete Python die richtige Version ist? (http://stackoverflow.com/questions/29879504/python-version-incorrectly-identified) Nicht überzeugt, dass das dein Problem ist, aber es ist ein Anfang. Auf einem anderen Hinweis, warum bist du immer noch auf 2.7.5? neueste ist 2.7.11. –

Antwort

0

Aus Ihrer Antwort scheint es, dass Sie mit dem zusätzlichen Schritt arbeiten.

Wenn Sie eine Offline-Installation durchführen, müssen Sie angeben, wo alle Pakete zu finden sind, die Sie explizit installieren möchten, nicht nur die oberste Ebene.

Ich persönlich war immer explizit über die Tatsache, dass Sie in der Datei suchen, und wie jede andere Pip-Installation können Sie mehrere Installationen in der gleichen Zeile für den Kontext angeben.

$ pip install --no-index --find-links file:/tmp/python_packages/ --use-wheel psutil my-package-1.4.zip 
+0

Ich glaube nicht, dass dies der Grund ist, weil pip das Rad findet; es weigert sich einfach, es aus einem Grund zu installieren, der nicht legitim klingt (Python-Version);) – Anto

+0

Das hat mehr mit der pip/ven/setuptools-Version zu tun als die Python-Version IMHO. @Anto: Was ist die Version dieser Tools, die Sie verwenden? Und um deretwillen welche Linux Distribution/Version? –

+0

Was ist die Ausgabe von Pip - Version? –

1

Die zentralen Fragen Sie stehen, ist IMHO dies:

Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
because it is not compatible with this Python 

Eine neue letzte Funktion wird in pip eingeführt zu unterstützen "viele Linux" Räder (Siehe diese PEP)

Wenn Nach einer direkten Installation des Rades fragend, werden minimale Überprüfungen durchgeführt und pip nimmt an, dass Sie wirklich dieses installieren möchten.

Wenn ein Rad in Ihrem Fall indirekt als Dep von Dep installiert ist, kann es in diesem Kontext zu nicht kompatiblen Tags kommen.

Ich würde sicherstellen, dass ich die neueste Version von pip, setuptools und virtualenv verwenden, um sich bewegende Teile zu entfernen, und es kann Sie Problem beheben.

Vague verwandt, und wenn dies helfen kann, verwende ich this script mit einem Linux/Mac oder Windows Wrapper, um konsistente Installation von vendored Pip-Pakete durchzuführen. Der entscheidende Punkt ist, alles zu verkaufen, und dies könnte ein weiterer Grund dafür sein, dass Sie Fehler bekommen.

1

Stellen Sie sicher, dass die Radversion, die Sie zum Erstellen des Rads verwenden, der Version entspricht, die während der Bereitstellung verwendet wurde.

Ich habe das gleiche Problem beim Versuch, ein Rad mit 0.29.0, mit Rad 0.24.0 eingesetzt zu implementieren.

Ich habe die Version des Rads, das zum Erstellen des Rads verwendet wurde, um die Version anzupassen, die während der Bereitstellung verwendet wurde, herabgestuft, und das Problem wurde behoben.

+0

Ich werde das überprüfen, vielen Dank. – Anto