Warum funktioniert pip -t unter Ubuntu 15.04 nicht?

8

Ich hatte ein seltsames Problem mit Pip unter Ubuntu 15.04. Wenn ich versuche, etwas mit der Option "-t" zu installieren, um es in ein bestimmtes Verzeichnis zu stellen, schlägt dies mit dem folgenden Fehler fehl:

error: can't combine user with prefix, exec_prefix/home, or install_(plat)base

Schlägt beispielsweise pip install -t <directory> <package>mit diesem Fehler fehl.

Mein Pip ist Version 1.5.6 und meine Python-Version ist 2.7.

Ich habe genau die gleichen Befehle auf meinen 14.10-Systemen ohne Probleme ausgeführt, daher kann ich nur den Schluss ziehen, dass dies ein Problem ist, das speziell für 15.04 gilt.

djpetti
quelle
Bearbeiten Sie Ihre Frage und fügen Sie Ihren Befehl "hinzu, um alles mit der Option" -t "zu installieren".
AB

Antworten:

8

Ich bin auf das gleiche Problem gestoßen und habe festgestellt, dass der Pip in der Standarddistribution alt ist 1.5.6, die aktuell veröffentlichte Version ist 7.1.0. Da es schwierig ist, das Problem aufzuspüren, habe ich dort und dort nach der "Nadel im Heuhaufen" gesucht und sie manuell installiert, wie im Folgenden vorgeschlagen:

Dieser Kommentar: https://github.com/pypa/pip/issues/1093#issuecomment-103127883, auf den in diesem Stapel verwiesen wird: /programming/19460232/pip-list-crashes-with-an-assertionerror

Pip entfernen:

sudo apt-get remove --auto-remove python-pip

Laden Sie das Installationsskript herunter:

wget https://bootstrap.pypa.io/get-pip.py

Installieren Sie es wieder:

sudo python get-pip.py

Befehle mit bin verknüpfen:

sudo ln -s [PIP_HOME]/bin/pip /usr/local/bin/pip
sudo ln -s [PIP_HOME]/bin/wheel /usr/local/bin/wheel
sudo ln -s [PIP_HOME]/bin/easy_install /usr/local/bin/easy_install

Wobei [PIP_HOME] das Verzeichnis des Pip-Pakets ist.

jetzt, wenn ich renne, pip -Vlöscht:

pip 7.1.0 from /home/tiberiu/.local/lib/python2.7/site-packages (python 2.7)

Zurück zu meinem Grundproblem der Befehlserfolg pip install -r requirements.txt -t libmit der neuesten Version.

Tiberiu C.
quelle
Ja, das scheint das Problem zu beheben.
Djpetti
1
/ local / bin existiert nicht. Die Gesamtlösung ist jedoch in Ordnung.
Luis Masuelli
Ich bin verwirrt. Warum verlinkst du von usr / local / bin / pip zu sich selbst?
Yitzchak
Was ist bootstrap.pypa.io und warum sollte man ihm vertrauen?
Corey S.
1
@CoreyS. Ja, die Domain pypa.io ist in der Tat komisch. aber das Verfahren ist in python.org gezeigt (ich habe es nicht erfunden). Quelle: docs.python.org/3/installing/index.html > Die Python Packaging Authority ist die Gruppe von Entwicklern und Dokumentationsautoren, die für die Wartung und Weiterentwicklung der Standardverpackungswerkzeuge und der zugehörigen Metadaten- und Dateiformatstandards verantwortlich sind. Sie verwalten eine Vielzahl von Tools, Dokumentationen und Issue-Trackern sowohl auf GitHub als auch auf BitBucket.
Tiberiu C.
4

Ich denke, die Antwort von @Tiberiu C hat den Nagel auf den Kopf getroffen. Ich kann nicht glauben, dass das pipin der Distribution so alt ist. Diese Schritte zur Lösung des Problems scheinen jedoch ein ziemlicher Arbeitsaufwand zu sein. Ich wollte daher vorschlagen, dass Sie, wenn Sie bereits über easy_installein System verfügen , seine Lösung folgendermaßen implementieren können:

sudo easy_install -U pip

Zuerst habe ich versucht, ein Selbst-Upgrade durchzuführen pipmit:

sudo pip install --upgrade pip

Es wird jedoch abgelehnt, die Distributionsversion zu ersetzen. Aber dann kam ich auf diese , die mich oben auf die Lösung gerichtet.

Jeteon
quelle