Que se passe-t-il si j'ai accidentellement pip install
un package que j'ai déjà installé en utilisant apt-get
au préalable? Dois-je simplement utiliser la dernière version (c'est-à-dire probablement celle que j'ai installée en utilisant pip
)? Que se passe-t-il dans l'autre sens?
Remarque: Je n'utilise pas Python dans un environnement virtuel (simplement parce que je ne sais pas pourquoi je devrais - j'utilise Python comme outil d'analyse de données et j'essaie surtout d'utiliser la dernière version de tout).
apt-get
etpip
pip
installe dans les/usr/local
sous-répertoires par défaut ou dans tout autre répertoire si vous le souhaitez.apt-get install python-pandas
suivi parpip install pandas
, ou l'inverse? Comment mon installation globale de python sait-elle laquelle des deux versions utiliser?python -c "import sys; print sys.path"
Réponses:
Comme @Timo l'a mentionné dans son commentaire,
python -c "import sys; print sys.path"
vous donnera le chemin de chargement du module Python pour votre installation de Python. Sur une installation relativement récente du 16.04, il y a trois répertoires à noter (parmi les 10 au total qui étaient dans le mien):Le plus important à noter, cependant, est que «/usr/local/lib/python2.7/dist-packages» est plus élevé en priorité que «/usr/lib/python2.7/dist-packages».
Si vous installez d'abord un paquet Python via apt (-get), il s'installera dans '/usr/lib/python2.7/dist-packages'. Si vous essayez plus tard d'utiliser pip pour installer le module, pip donnera initialement un avertissement que la dépendance est déjà satisfaite, puis quittera; l'ajout de l'option --upgrade forcera pip à installer, installant le module dans '/usr/local/lib/python2.7/dist-packages'. (Notez la sortie qui indique également que la version en « /usr/lib/python2.7/dist-packages » n'est pas désinstallée) Vous pouvez alors vérifier que la version pip installé est celui utilisé en utilisant ce qui suit:
python -c "import MODULE; print MODULE.__file__"
.En tant que tel, cela montre que les packages installés via pip auront priorité sur les packages installés par le système, mais n'écraseront rien installé depuis apt (-get).
la source
Pour ajouter à @Bryan Wyatt, il semble souhaitable (et prévu) que les éléments installés / mis à niveau PIP aient priorité sur les packages installés (probablement plus anciens) APT. Mon système avait les chemins apt et pip inversés. Cela devrait être (en ignorant les autres entrées):
Pourtant, en raison d'une action inconnue que j'ai dû prendre, ces chemins sont apparus dans l'ordre inverse pour moi (en ignorant les autres entrées):
Il se trouve quelque chose que je n'ajouté
/usr/lib/python2.7/dist-packages
à/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Il suffit de supprimer la ligne deeasy-install.pth
corriger le problème pour moi./usr/lib/python2.7/dist-packages
est toujours sur mon chemin, car il est ajouté à un stade ultérieur ailleurs.En guise de remarque, pprint affichera mieux votre chemin ... c'est-à-dire:
la source