Comment mettre à jour pip lui-même depuis mon environnement virtuel?

523

Je peux mettre à jour les packages gérés par pip, mais comment puis-je mettre à jour pip lui-même? Selon pip --version, j'ai actuellement pip 1.1 installé dans mon virtualenv et je souhaite mettre à jour vers la dernière version.

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

zakdances
la source
40
pip install --upgrade pip? C'est juste un autre package PyPI.
Cairnarvon
1
Cette commande me donne "/ Users / zak / MyProject / venv / bin / pip install: erreur: pas une telle option: --update"
zakdances
4
Il est --upgrade, non --update, désolé. J'ai édité mon message immédiatement, mais vous devez l'avoir vu exactement au mauvais moment.
Cairnarvon
2
@Cairnarvon est la commande différente pour pip3? J'essaye pour pip3 mais il me dit juste qu'il ne peut pas le trouver et continue alors se plaint ENCORE que ce n'est pas à jour ... quand il ne me laisse même pas le mettre à jour / le mettre à jour!
Charlie Parker

Réponses:

930

pipest juste un package PyPI comme les autres; vous pouvez l'utiliser pour vous mettre à niveau de la même manière que pour n'importe quel package:

pip install --upgrade pip

Sous Windows, la commande recommandée est:

python -m pip install --upgrade pip
Cairnarvon
la source
53
Sous Windows, j'ai eu un problème d'autorisations lors de la mise à niveau de pip à l'aide de pip. Au lieu de cela, j'ai utilisé easy_install pour mettre à niveau:easy_install pip
bsa
8
Quand j'ai fait ce pip a semblé mettre à jour (1.1 -> 1.4), mais quand je fais "pip --version" il montre 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.
Zitrax
40
Sur Windows, il est probablement préférable d'utiliser une commande comme celle-ci: python -m pip install --upgrade pippour éviter d'exécuter pip.exe à partir du répertoire des scripts.
bialix
@Zitrax avez-vous résolu ce problème? Je suis confronté au même problème.
Mohammad ali baghershemirani
@Mohammadalibaghershemirani désolé il y a un certain temps - je ne m'en souviens pas.
Zitrax
58

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

python -m pip install -U pip

Sur les fenêtres, il semble y avoir un problème avec les binaires qui essaient de se remplacer, cette méthode contourne cette limitation.

Janusz Skonieczny
la source
9
C'est maintenant ce que pip lui-même recommande, s'il détecte une nouvelle version de lui-même.
tephyr
1
Je pense que la raison pour laquelle cela est plus sûr est que sur certains systèmes d'exploitation (Windows), le simple fait d'exécuter pip peut créer un verrou de fichier sur l'exécutable, ce qui empêcherait sa mise à jour. En appelant Python et en lui disant de charger le module directement, vous évitez d'accéder à l'exécutable.
jpmc26
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 d'invite de commandes en mode administrateur, puis cette commande a parfaitement fonctionné.
DaveN59
42

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

Réparer:

(inside virtualenv):easy_install -U pip
jmoz
la source
1
C'était mon cas aussi. J'ai essayé toutes les autres méthodes mais seule celle-ci m'aide. Merci !
levif
Même chose ici, c'est la seule façon qui fonctionne pour moi sur Debian. L'utilisation de python ou pip pour mettre à niveau pip depuis virtualenv échouerait car il refusait de désinstaller le pip existant situé à l'extérieur du venv.
user3748764
L'exécution de cela m'a montré beaucoup de choses, y compris celles 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'étaient pas affichées lors de l'exécution de --upgrade. Et c'est probablement la raison pour laquelle l'installation d'un package pip échoue et pourquoi la mise à niveau de pip via pip échoue également, SSL semble cassé.
Vadorequest
9

J'ai essayé toutes ces solutions mentionnées ci-dessus sous Debian Jessie. Ils ne fonctionnent pas, car il suffit de 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 packages qui utilisent pip comme prérequis ne fonctionneront pas comme un résultat, 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 à l'aide de 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 de la rédaction de cette solution est 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)
Eamonn Kenny
la source
2
utile en cas d' pip install --upgrade pipéchec
Aneuway
Si je pouvais voter à plusieurs reprises cette réponse, je le ferais. Cela vient de résoudre un problème où pip 9.x a échoué avec une erreur SSL en mettant à jour vers pip 10.x. Voir stackoverflow.com/questions/25981703/…
Keith John Hutchison
Eh bien, si vous l'avez voté une seule fois, je serai heureux. Mes réponses se trouvent généralement à partir d'une heure ou deux de chasse et d'années d'expérience. Vous ne pouvez pas en dire autant de mes questions? Les gens peuvent être vraiment méchants! :)
Eamonn Kenny
4

La mise à niveau de pip à l'aide de ' pip install --upgrade pip ' ne fonctionne pas toujours en raison du problème de certificat redouté: un problème est survenu lors de la confirmation du certificat ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] version du protocole d'alerte tlsv1

J'aime utiliser la commande d' une ligne pour les envs virtuels:

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

Ou si vous voulez l'installer dans une boîte large, vous aurez besoin

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

vous pouvez attribuer un indicateur -s à curl si vous souhaitez désactiver la sortie lors de l'exécution dans un script d'automatisation.

rouble
la source
1

Dans mon cas, cela a fonctionné à partir de la ligne de commande du terminal dans Debian Stable

python3 -m pip install --upgrade pip
Prabhakaran KC
la source
1

Pour que cela fonctionne pour moi, j'ai dû explorer le répertoire Python en utilisant l'invite de commande Python (sur WIN10 à partir de VS CODE). Dans mon cas, c'était dans mon répertoire "AppData \ Local \ Programs \ Python \ python35-32". À partir de là, j'ai exécuté la commande ...

python -m pip install --upgrade pip

Cela a fonctionné et je suis prêt à partir.

Sean
la source
1

Ouvrez l'invite de commandes avec les autorisations d'administrateur et répétez la commande:

python -m pip install --upgrade pip
MRamzan
la source
4
N'est-ce pas la même chose que certaines des réponses existantes?
hkchengrex
C'est mais, j'ai eu le problème et il a été résolu lorsque j'ai exécuté CMD avec des privilèges d'administrateur.
MRamzan
1

pip version 10 a un problème. Il se manifestera comme l'erreur:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

La solution consiste à être dans le venv que vous souhaitez mettre à niveau, puis à exécuter:

sudo myvenv/bin/pip install --upgrade pip

plutôt que juste

sudo pip install --upgrade pip
Calaf
la source
1

Si vous utilisez venv, toute mise à jour de l'installation de pip entraînera la mise à niveau du système pip au lieu du venv pip. Vous devez également mettre à niveau les packages d'amorçage pip.

  python3 -m pip install --upgrade pip setuptools wheel
dre-hh
la source
il y avait un problème avec python mailist ou pepa. Malheureusement, toutes les parties ont repoussé la responsabilité de leur not my motorollerproblème
dre-hh
0

J'avais installé Python dans C: \ Python \ Python36, donc je suis allé à l'invite de commande Windows et j'ai tapé "cd C: \ Python \ Python36 pour accéder au bon répertoire. Puis je suis entré dans" python -m install --upgrade pip "tout bien!

Walt
la source
0

Sur mon ordinateur portable avec Windows 7, la bonne façon d'installer la dernière version de pip est:

python.exe -m pip install --upgrade pip
MiloshB
la source
0

Programme Python sur
une seule ligne La meilleure façon que j'ai trouvée est d'écrire un programme sur une seule ligne qui télécharge et exécute le script get-pip officiel. Voir ci-dessous pour le code.

Les documents officiels recommandent d'utiliser curl pour télécharger le script get-pip, mais comme je travaille sur Windows et que curl n'est pas installé, je préfère utiliser python lui-même pour télécharger et exécuter le script.

Voici le programme en ligne unique qui peut être exécuté via la ligne de commande en utilisant Python 3:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Cette ligne obtient le script officiel "get-pip.py" selon les notes d'installation et exécute le script avec la commande "exec".

Pour Python2, vous remplaceriez "urllib.request" par "urllib2":

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Précautions
Il convient de noter que l'exécution aveugle d'un script python est intrinsèquement dangereuse. Pour cette raison, les instructions officielles recommandent de télécharger le script et de l'inspecter avant de l'exécuter.

Cela dit, beaucoup de gens n'inspectent pas le code et l'exécutent. Ce programme en ligne facilite cela.

FistOfFury
la source
0

J'ai eu un problème similaire sur un Raspberry Pi.

Le problème était que http nécessite SSL et j'ai donc dû le forcer à utiliser https pour contourner cette exigence.

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

ou

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/
user391339
la source
0

J'étais dans une situation similaire et je voulais mettre à jour le package urllib3. Ce qui a fonctionné pour moi, c'est:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3
Avik Aggarwal
la source
-2

Très simple. Téléchargez simplement pip depuis https://bootstrap.pypa.io/get-pip.py . Enregistrez le fichier dans un forlder ou un dekstop. J'ai enregistré le fichier dans mon lecteur D. Ensuite, à partir de votre invite de commande, accédez au dossier dans lequel vous avez téléchargé pip. Tapez ensuite

python -get-pip.py

Capture d'écran de l'installation de Pip

Prasad K
la source