Was passiert, wenn ich versehentlich pip install
ein Paket installiert habe, das ich bereits zuvor installiert habe apt-get
? Kann ich einfach die neueste Version verwenden (dh wahrscheinlich die, mit der ich sie installiert habe pip
)? Was passiert umgekehrt?
Hinweis: Ich verwende Python nicht in einer virtuellen Umgebung (einfach weil ich nicht weiß, warum ich es tun soll - ich verwende Python als Datenanalysetool und versuche meistens, die neueste Version von allem zu verwenden).
apt-get
undpip
pip
installiert sie/usr/local
standardmäßig in Unterverzeichnissen oder in einem anderen Verzeichnis, wenn Sie möchten.apt-get install python-pandas
gefolgt binpip install pandas
oder umgekehrt? Woher weiß meine globale Python-Installation, welche der beiden Versionen verwendet werden soll?python -c "import sys; print sys.path"
Antworten:
Wie @Timo in seinem Kommentar erwähnt hat
python -c "import sys; print sys.path"
, erhalten Sie den Ladepfad des Python-Moduls für Ihre Installation von Python. Bei einer relativ neuen Installation vom 16.04. Gibt es drei wichtige Verzeichnisse (unter den insgesamt 10, die sich in meinem befanden):Am wichtigsten ist jedoch, dass '/usr/local/lib/python2.7/dist-packages' Vorrang vor '/usr/lib/python2.7/dist-packages' hat.
Wenn Sie ein Python-Paket zuerst über apt (-get) installieren, wird es in '/usr/lib/python2.7/dist-packages' installiert. Wenn Sie später versuchen, das Modul mit pip zu installieren, gibt pip zunächst eine Warnung aus, dass die Abhängigkeit bereits erfüllt ist, und beendet das Programm. Durch Hinzufügen des Flags --upgrade wird pip zur Installation gezwungen, und das Modul wird in '/usr/local/lib/python2.7/dist-packages' installiert. (Beachten Sie die Ausgabe, die auch besagt, dass die Version in '/usr/lib/python2.7/dist-packages' nicht deinstalliert ist.) Sie können dann überprüfen, ob die von Pip installierte Version die folgende ist :
python -c "import MODULE; print MODULE.__file__"
.Als solches zeigt dies, dass über pip installierte Pakete Vorrang vor vom System installierten Paketen haben, aber nichts, was von apt (-get) installiert wurde, überschreiben.
quelle
Um @Bryan Wyatt hinzuzufügen, erscheint es wünschenswert (und beabsichtigt), dass installierte / aktualisierte PIP-Elemente Vorrang vor (wahrscheinlich älteren) installierten APT-Paketen haben. Bei meinem System waren die Apt- und Pip-Pfade umgekehrt. Es sollte sein (andere Einträge ignorieren):
Aufgrund einer unbekannten Maßnahme, die ich ergriffen haben muss, wurden diese Pfade für mich jedoch in umgekehrter Reihenfolge angezeigt (wobei andere Einträge ignoriert wurden):
Es stellt sich heraus, dass ich etwas hinzugefügt
/usr/lib/python2.7/dist-packages
habe/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Durch einfaches Entfernen der Leitung wurdeeasy-install.pth
die Fehlordnung für mich behoben./usr/lib/python2.7/dist-packages
ist immer noch auf meinem Weg, da es zu einem späteren Zeitpunkt an anderer Stelle hinzugefügt wird.Als Randnotiz zeigt pprint Ihren Pfad schöner an ... dh:
quelle