665 votes

Comment mettre à jour \upgrade pip lui-même depuis l'intérieur de mon environnement virtuel ?

Je suis capable de mettre à jour les paquets gérés par pip, mais comment mettre à jour pip lui-même ? D'après pip --version J'ai actuellement pip 1.1 installé dans mon virtualenv et je veux passer à la dernière version.

Quelle est la commande pour ça ? Dois-je utiliser distribute ou existe-t-il une commande native pip ou virtualenv ? J'ai déjà essayé pip update y pip update pip sans succès.

60 votes

pip install --upgrade pip ? C'est juste un autre paquet PyPI.

1 votes

Cette commande me donne "/Users/zak/MyProject/venv/bin/pip install : error : no such option : --update"

4 votes

C'est --upgrade pas --update Désolé. J'ai édité mon message immédiatement, mais vous avez dû le voir exactement au mauvais moment.

1161voto

Cairnarvon Points 6337

pip est juste un Paquet PyPI comme n'importe quel autre ; vous pouvez l'utiliser pour se mettre à jour de la même manière que vous mettez à jour n'importe quel paquet :

pip install --upgrade pip

Sous Windows, le commande recommandée est :

python -m pip install --upgrade pip

63 votes

Sous Windows, j'ai eu un problème de permissions en essayant de mettre à jour pip en utilisant pip. A la place, j'ai utilisé easy_install pour la mise à jour : easy_install pip

8 votes

Lorsque j'ai fait cela, Pip a semblé mettre à jour (1.1 -> 1.4), mais lorsque je fais "pip --version", il affiche toujours l'ancienne version 1.1. J'ai essayé de désactiver et d'activer à nouveau le virtualenv mais il affiche toujours l'ancienne version.

44 votes

Sous Windows, il est probablement préférable d'utiliser une commande comme celle-ci : python -m pip install --upgrade pip pour éviter de lancer pip.exe depuis le répertoire des scripts.

73voto

Janusz Skonieczny Points 1587

La méthode la plus sûre consiste à exécuter pip à travers un module python :

python -m pip install -U pip

Sous Windows, il semble y avoir un problème avec les binaires qui essaient de se remplacer eux-mêmes, cette méthode contourne cette limitation.

10 votes

C'est maintenant ce que recommande pip lui-même, s'il détecte une version plus récente de lui-même.

2 votes

Je pense que la raison pour laquelle cette méthode est plus sûre est que sur certains systèmes d'exploitation (Windows), le simple fait d'exécuter pip directement peut créer un verrou de fichier sur l'exécutable, ce qui empêcherait sa mise à jour. En appelant Python et en lui demandant de charger directement le module, vous évitez d'accéder à l'exécutable.

1 votes

Vous devez exécuter l'invite de commande en mode administrateur pour que cela fonctionne. J'ai essayé plusieurs autres suggestions et rien n'a fonctionné jusqu'à ce que je redémarre la fenêtre de l'invite de commande en mode administrateur, puis cette commande a fonctionné parfaitement.

53voto

jmoz Points 984

Dans mon cas, ma version de pip était cassée et la mise à jour en elle-même ne fonctionnait pas.

Fixe :

(inside virtualenv):easy_install -U pip

1 votes

C'était aussi mon cas. J'ai essayé toutes les autres méthodes mais seule celle-ci m'a aidé. Merci !

0 votes

Pareil, c'est la seule façon qui fonctionne pour moi sur Debian. L'utilisation de python ou de pip pour mettre à jour pip à partir du virtualenv échoue car il refuse de désinstaller pip existant en dehors du venv.

0 votes

En courant, j'ai appris beaucoup de choses, notamment Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found! qui n'était pas affiché lors de l'exécution de --upgrade. Et c'est probablement la raison pour laquelle l'installation de n'importe quel paquet pip échoue et pourquoi la mise à niveau de pip via pip échoue également, SSL semble cassé.

14voto

Eamonn Kenny Points 11

J'ai essayé toutes les solutions mentionnées ci-dessus sous Debian Jessie. Elles ne fonctionnent pas, parce qu'il prend juste la dernière version compilée par le gestionnaire de paquets debian qui est 1.5.6 ce qui équivaut à la version 6.0.x. Certains paquets qui utilisent pip comme pré-requis ne fonctionneront pas en conséquence, comme spaCy (qui a besoin de l'option --no-cache-dir pour fonctionner correctement).

Donc, la meilleure façon de résoudre ces problèmes est d'exécuter get-pip.py téléchargé à l'aide de wget, à partir du site web ou en utilisant curl comme suit :

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

Cela installera la version actuelle qui, au moment où nous écrivons cette solution, est la 9.0.1, ce qui est bien au-delà de ce que Debian fournit.

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)

4 votes

Utile pour quand pip install --upgrade pip échoué

1 votes

Si je pouvais voter plusieurs fois pour cette réponse, je le ferais. Cela vient de résoudre un problème où pip 9.x échouait avec une erreur SSL en mettant à jour vers pip 10.x. Voir stackoverflow.com/questions/25981703/

1 votes

Eh bien, si vous avez upvoted même une fois, je serai heureux. Mes réponses sont généralement trouvées après une heure ou deux de chasse et des années d'expérience. Je ne peux pas en dire autant de mes questions ? Les gens peuvent être vraiment méchants ! :)

7voto

prmatta Points 1189

Mise à jour de pip en utilisant ' pip install --upgrade pip ne fonctionne pas toujours à cause de la redoutable question des certificats : Il y a eu un problème de confirmation du certificat ssl : [SSL : TLSV1_ALERT_PROTOCOL_VERSION] version du protocole d'alerte tlsv1

J'aime utiliser le une ligne pour les environnements virtuels :

curl https://bootstrap.pypa.io/get-pip.py | python -

Ou si vous voulez l'installer en largeur, il vous faudra

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

vous pouvez donner à curl un -s si vous voulez réduire au silence la sortie lors de l'exécution dans un script d'automatisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X