344 votes

Comment mettre à jour un paquetage Python ?

Je suis sous Ubuntu 9:10 et un paquet appelé M2Crypto est installé (la version est 0.19.1). Je dois télécharger, construire et installer la dernière version du paquet M2Crypto (0.20.2).

Le paquet 0.19.1 contient des fichiers dans un certain nombre d'emplacements, notamment (/usr/share/pyshared et /usr/lib/pymodules.python2.6).

Comment puis-je désinstaller complètement la version 0.19.1 de mon système avant d'installer la 0.20.2 ?

624voto

princelySid Points 5579

Le meilleur moyen que j'ai trouvé est d'exécuter cette commande depuis un terminal

sudo pip install [package_name] --upgrade

sudo vous demandera d'entrer votre mot de passe racine pour confirmer l'action.


Note : Certains utilisateurs peuvent avoir installé pip3 à la place. Dans ce cas, utilisez

sudo pip3 install [package_name] --upgrade

5 votes

Et si vous utilisez un proxy sans authentification : sudo pip install [package] --upgrade --proxy=adresse:port

50 votes

Je suis venu ici pour cette réponse. J'ai essayé pip update y pip upgrade et j'étais désespérée jusqu'à ce que je voie --upgrade ici. Pourquoi n'ajoutent-ils pas un pip upgrade commande ?

9 votes

Il s'agit en effet d'une fonctionnalité bien cachée.

68voto

Jeremy Whitlock Points 2540

Vous pouvez vous tourner vers un gestionnaire de paquets Python comme pip . Si vous ne voulez pas utiliser un gestionnaire de paquets Python, vous devriez pouvoir télécharger M2Crypto et construire/compiler/installer par-dessus l'ancienne installation.

2 votes

Merci. Ce que vous avez dit a fonctionné. J'ai construit et installé la 0.20.2 sans avoir besoin de désinstaller la 0.19.1.

57voto

Fahim Ferdous Points 638

Pour mettre automatiquement à jour tous les paquets périmés (qui ont été installés à l'aide de pip), il suffit d'exécuter le script ci-dessous,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Ici, pip list --outdated listera tous les paquets périmés et nous le passerons à awk pour qu'il n'imprime que les noms. Ensuite, le $(...) en fera une variable et ensuite, tout se fera de manière automatique. Assurez-vous que vous avez les permissions. (Il suffit de mettre sudo avant le pip si vous êtes confus) J'écrirais un script nommé, pip-upgrade Le code est ci-dessous,

#!/bin/bash
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Utilisez ensuite les lignes suivantes de script pour le préparer :

sudo chmod +x pip-upgrade
sudo cp pip-upgrade /usr/bin/

Ensuite, il suffit de cliquer sur pip-upgrade et voilà !

0 votes

J'ai eu une erreur de syntaxe en pointant la dernière parenthèse dans : awk: cmd. line:1: { print $1 })

8 votes

@TT Des versions plus récentes de pip vous obligent à utiliser le --format=legacy l'option, c'est-à-dire, pip list --outdated --format=legacy . Pour votre information : mettre à jour aveuglément tous les modules via pip peut être assez dangereux sur de nombreuses distributions Linux. Beaucoup d'entre elles fournissent des modules python spécifiques via des paquets de distro et certaines de ces distros (RHEL en particulier) peuvent se casser la figure si vous mettez à jour de la merde ... sans parler du fait que si vous mettez à jour via pip, les paquets de distro peuvent annuler vos changements lors d'une future mise à jour.

0 votes

Merci @rsaw. Il a raison, vous devez exécuter vos commandes pip avec l'option --user.

45voto

  1. Via l'invite de commande de Windows, exécutez : pip list --outdated Vous obtiendrez la liste des paquets périmés.
  2. Cours : pip install [package] --upgrade Il permettra de mettre à niveau le [package] et désinstaller la version précédente.

Pour mettre à jour le pip :

py -m pip install --upgrade pip

Encore une fois, cela va désinstaller la version précédente de pip et installer la dernière version de pip.

40voto

Donghua Luo Points 273
  • Méthode 1 : Mise à niveau manuelle une par une

pip install package_name -U
  • Méthode 2 : Mise à jour en une seule fois (risque élevé de retour en arrière si certains paquets ne sont pas mis à jour).

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Méthode 3 : Mise à niveau une par une en utilisant la boucle

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done

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