Co się stanie, jeśli przypadkowo skorzystam pip install
z pakietu, który już zainstalowałem apt-get
? Czy mogę po prostu użyć najnowszej wersji (tj. Prawdopodobnie tej, którą zainstalowałem pip
)? Co dzieje się na odwrót?
Uwaga: Nie używam Pythona w środowisku wirtualnym (po prostu dlatego, że nie wiem, dlaczego powinienem - używam Pythona jako narzędzia do analizy danych i najczęściej próbuję używać najnowszej wersji wszystkiego).
apt-get
ipip
pip
instaluje je/usr/local
domyślnie w podkatalogach lub w innym katalogu, jeśli chcesz.apt-get install python-pandas
następujepip install pandas
, lub na odwrót? Skąd moja globalna instalacja Pythona wie, której z obu wersji użyć?python -c "import sys; print sys.path"
Odpowiedzi:
Jak wspomniano w komentarzu @Timo,
python -c "import sys; print sys.path"
poda ścieżkę ładowania modułu Python do instalacji Pythona. Przy stosunkowo świeżej instalacji 16.04 istnieją trzy katalogi warte uwagi (spośród 10, które były w mojej kopalni):Należy jednak zauważyć, że „/usr/local/lib/python2.7/dist-packages” ma wyższy priorytet niż „/usr/lib/python2.7/dist-packages”.
Jeśli najpierw zainstalujesz pakiet Python za pomocą apt (-get), zostanie on zainstalowany w '/usr/lib/python2.7/dist-packages'. Jeśli później spróbujesz użyć pip do zainstalowania modułu, pip początkowo ostrzeże, że zależność jest już spełniona, a następnie wyjdzie; dodanie flagi --upgrade zmusi pip do instalacji, instalując moduł w '/usr/local/lib/python2.7/dist-packages'. (Zawiadomienie wyjście, które mówi, że również w wersji „/usr/lib/python2.7/dist-packages” nie zostało odinstalowane) Można następnie sprawdź, czy wersja pip zainstalowany jest jeden wykorzystywane przy użyciu następujących:
python -c "import MODULE; print MODULE.__file__"
.Oznacza to, że pakiety zainstalowane przez pip będą miały pierwszeństwo przed pakietami zainstalowanymi przez system, ale nie zastąpią niczego zainstalowanego z apt (-get).
źródło
Aby dodać do @Bryan Wyatt, wydaje się pożądane (i zamierzone), aby zainstalowane / zaktualizowane elementy PIP miały pierwszeństwo przed (prawdopodobnie starszymi) zainstalowanymi pakietami APT. Mój system miał odwrócone ścieżki apt i pip. Powinno być (ignorując inne wpisy):
Jednak z powodu jakichś nieznanych działań, które musiałem podjąć, ścieżki te pojawiły się dla mnie w odwrotnej kolejności (ignorując inne wpisy):
Okazuje się coś, czego nie dodana
/usr/lib/python2.7/dist-packages
do/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Po prostu usunięcie linii zeeasy-install.pth
naprawiło dla mnie nieporozumienia./usr/lib/python2.7/dist-packages
wciąż jest na mojej ścieżce, ponieważ dodaje się go później w innym miejscu.Na marginesie, pprint sprawi, że Twoja ścieżka będzie ładniejsza ... tj .:
źródło