web-dev-qa-db-fra.com

Pip utilisant soudainement une mauvaise version de Python

Avoir un problème étrange avec pip sur os x.

Autant que je me souvienne (et un rapide coup d'œil à mon .bash_history semble confirmer), je n'ai apporté aucune modification récente à ma configuration. Hélas, la commande pip semble soudainement utiliser une version de python différente de celle qu'elle était auparavant. Jusqu'à présent, j'utilisais la commande pip pour gérer mes bibliothèques python2 et pip3 pour le gérer à l'aide de bibliothèques python3. Soudainement, toute tentative d'exécution de l'installation du pip échoue avec des erreurs telles que des parenthèses manquantes autour des instructions d'impression.

Voici le résultat de quelques commandes que j'ai tenté de comprendre:

which pip > /usr/local/bin/pip

which pip3 > /usr/local/bin/pip3

which python > /usr/local/bin/python

python version > Python 2.7.11

pip --version > pip 8.1.1 from /usr/local/lib/python3.5/site-packages (python 3.5)

Donc, pour une raison quelconque, la commande pip semble fonctionner depuis la base de données PyPi2 mais en python3 maintenant? Une idée de comment réparer ça?

8
jcmiller11

Je cours avec plusieurs versions de Python et donc plusieurs versions de pip.

Cependant, chaque fois que vous mettez à jour pip, vous remplacez la commande standard pip par la version que vous avez mise à jour. Donc, même pip3 install --upgrade pip mettra un /usr/local/bin/pip dans votre système, dérangeant la version Python 2.

Au lieu de cela, je lance pip en tant que module (exécutable):

python3 -m pip search <package>

ou 

python2 -m pip search <package>

ou même

python3.5 -m pip search <package>

Cela garantit que votre version pip correspond toujours à la version Python pour laquelle vous souhaitez l'utiliser. Il est un peu plus long de taper, mais je préfère son caractère explicite (qui, je suppose, suit le zen de Python).

Notez que mettre à jour pip:

python3.5 -m pip install --upgrade pip

installera toujours une version Python 3.5 dans /usr/local/bin/pip, mais je l’ignore simplement. Méfiez-vous des scripts (Shell) qui exécutent pip directement.

12
user707650

J'ai eu exactement le même problème!

Je réinstalle python2 par brew brew reinstall python@2

après la réinstallation, pip install packagename fonctionne!

3
shihs

Essayez de définir des alias en lançant les commandes suivantes dans Terminal,

alias pip="/usr/local/bin/pip"
alias pip2="/usr/local/bin/pip"
alias pip3="/usr/local/bin/pip3"

Si cela résout votre problème, vous devez ajouter les alias dans votre profil bash. Look Comment créer un alias Bash? pour plus d'informations.

Sinon, vous devez réinstaller pip en utilisant d'abord python2 get-pip.py, puis python3 get-pip.py get-pip.py peut être téléchargé ici https://bootstrap.pypa.io/get-pip.py

2
alec_djinn

Trouvez le chemin absolu vers Python que vous souhaitez utiliser:

which python

Ouvrez votre script exécutable pip par défaut:

vi $(which pip)

Vous verrez une ligne Shebang en haut qui peut indiquer un mauvais Python (je l'avais aussi une fois).

Pointez sur le Python souhaité (voir l’étape 1), par exemple:

#!/usr/local/bin/python3.7
0
Dmitry Tokarev