Comment mettre à niveau pip au dernier?


51

J'ai installé pip en utilisant get-pip.pyaprès cela pip freezejette l'erreur ci-dessous

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/simon/.pip/pip.log

Alors j'ai vérifié que 1.7 est le dernier. Si j'ai suivi les étapes ci-dessous et que la mise à jour ne se produit pas ... Aidez-moi ici ...

simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip install -U pip
Downloading/unpacking pip
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
Successfully installed pip
Cleaning up...
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

1
sudo -H pip3 installer --upgrade pip
moldave

Réponses:


54

En général, je ne fais que lancer les commandes suivantes pour mettre à niveau à la fois pip2(= pippar défaut) et pip3:

sudo -H pip3 install --upgrade pip
sudo -H pip2 install --upgrade pip

Vous devez vous assurer que vous mettez à niveau la version (pour Python 2 ou 3), que vous souhaitez réagir à la commande pipsans numéro, en dernier.

Veuillez également noter que cela conserve les anciennes versions empaquetées installées via apt-getn'importe quel autre gestionnaire de paquets, mais ajoute de nouvelles versions qui n'ont rien à voir avec les paquets système. Les pippaquets -installés seront préférés, mais vous ne devriez pas non plus supprimer apt-getceux -installés, car le gestionnaire de paquets ne peut pas savoir si une pipversion est installée autrement.


3
Pourquoi est-il important de s'installer chez soi sudo -H?
Léo Léopold Hertz

11
@Masi Car pipveut écrire ses fichiers téléchargés quelque part pour les mettre en cache. Il est implémenté pour les placer dans un sous-dossier du répertoire de base de l'utilisateur actuel. Si vous l'exécutez sans -Hcela, vous vous plaindrez, car il détecte que le répertoire de base actuellement défini (utilisateur normal) ne correspond pas à l'utilisateur sous lequel il est exécuté (racine). S'il écrivait ses fichiers dans votre répertoire personnel, ceux-ci appartiendraient à root et ne seraient plus accessibles à vous en tant qu'utilisateur normal. Par conséquent, les fichiers ne sont pas mis en cache dans ce cas. Ce n'est pas terrible d'omettre ce -Hqui est pipdétecté et mis en garde.
Byte Commander

1
Pourquoi les deux commandes écrasent-elles simplement la pipcommande? Lorsque j'effectue une mise pip2à niveau, la pip2commande n'est pas mise à niveau , mais simplement pip.
Yep_It's_Me

@ Yep_It's_Me c'est parce qu'il pipest relatif à la version de python que vous appelez. et c’est pourquoi ses commandes sont pip2et pip3appellent respectivement la version appropriée de python pour mettre à jour pip. Cela a-t-il du sens?
JayRizzo le

27

Je pense que le

pip install --upgrade pip

La commande ne fonctionne plus correctement. La commande correcte devrait être:

  • pour Python 3:

    python3 -m pip install --upgrade pip
  • pour Python 2:

    python2 -m pip install --upgrade pip

Gg @ david-foerster
JayRizzo le

Sous Linux, utilisez simplement pip install -U pip(voir Mise à niveau de pip )
Eido95

1
J'ai eu des problèmes lors de la mise à jour du pip depuis la racine (dans une image Docker) et cela a fonctionné à merveille.
Cristian Ramon-Cortes le

A fonctionné comme un charme sur la menthe Linux
HelloWorld

5

Aller sur ce site https://pypi.python.org/pypi/pip

copier (ou) télécharger le lien source (se termine par .tar.gz)

pour 9.0.1, le lien est https://pypi.python.org/pypi?:action=show_md5&digest=35f01da33009719497f01a4ba69d63c9

procédure d'installation

wget //link goes here
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python3 setup.py install

la version doit être remplacée par la dernière version et le lien peut être mis à jour avec le lien de la dernière version

cela devrait marcher


c'est la seule chose qui a fonctionné pour moi puisque tout le reste a besoin d'une connexion au serveur à partir du shell, ce qui échoue à nouveau avec la même erreur.
Alok Rajasukumaran

1

pip install -U pip

Le plus court que je connaisse.


1

Je pense qu'il vaut la peine de mentionner que ce que j'explique ci-dessous est si vous vous attendez à ce que pip pointe sur Python 2 et que pip3 pointe sur Python 3. La raison pour laquelle je le mentionne est que parce que vous mettez à niveau pip3, il prend également en charge la commande pip bien. Ceci est une convention quelque peu étrange car par défaut, python pointe vers 2.x et python3 pointe vers 3.x. Cela étant dit...

Si vous souhaitez faire coexister les versions les plus récentes de python 2.x pip et de python 3.x pip3 sur le même ordinateur (à l'aide de pip pour 2.x et de pip3 pour 3.x), vous devez procéder comme suit:

sudo apt-get install python-pip python3-pip --yes
sudo python3 -m pip install pip --upgrade --force
sudo python -m pip install pip --upgrade --force # this line associates pip with Python 2

Les autres réponses fournies par d'autres omettent de mentionner qu'après l'exécution de sudo pip3 install pip --upgrade, vous obtiendrez la commande pip en installant des packages dans les répertoires python 3.x au lieu des répertoires python 2.x.

Une partie de moi pense que nous devrions simplement laisser pip be après la mise à niveau de pip3 (même si pip -> pip3), mais il existe un risque que les utilisateurs s’attendent déjà à ce que les fonctions de pip soient comme python - les deux pointant vers python 2.x. En d'autres termes, les personnes sont probablement formées à utiliser pip / python pour Python 2.x, tout comme elles sont formées à utiliser pip3 / python3 pour Python 3.x.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.