1802 votes

Installation d'une version spécifique du paquet avec pip

J'essaye d'installer la version 1.2.2 de MySQL_python en utilisant un nouveau virtualenv créé avec l'option --no-site-packages option. La version actuelle affichée dans PyPi est 1.2.3 . Existe-t-il un moyen d'installer l'ancienne version ? J'ai essayé :

pip install MySQL_python==1.2.2

Cependant, une fois installé, il affiche toujours MySQL_python-1.2.3-py2.6.egg-info dans les paquets de sites. S'agit-il d'un problème spécifique à ce paquet, ou est-ce que je fais quelque chose de mal ?

23 votes

Merci pour l'astuce, cela a fonctionné pour moi pour installer une ancienne version d'openpyxl via pip install MySQL_python==1.8.9

4 votes

Oui, cela a également fonctionné pour les pandas, merci : pip install -Iv pandas==0.12.0

1 votes

A également fonctionné pour moi : pip install xvfbwrapper==0.2.4

30voto

Jack Chan Points 81

Parfois, la version précédemment installée est mise en cache.

~$ pip install pillow==5.2.0

Il retourne les éléments suivants :
Exigence déjà satisfaite : pillow==5.2.0 dans /home/ubuntu/anaconda3/lib/python3.6/site-packages (5.2.0)

Nous pouvons utiliser --no-cache-dir avec -I pour écraser ceci

~$ pip install --no-cache-dir -I pillow==5.2.0

10voto

Trenton Points 2315

Comme il semble s'agir d'un changement de rupture introduit dans la version 10 de pip, j'ai rétrogradé vers une version compatible :

pip install 'pip<10' 

Cette commande indique à pip d'installer une version du module inférieure à la version 10. Faites ceci dans un fichier virutalenv pour ne pas bousiller l'installation de Python sur votre site.

10voto

Tapan Hegde Points 86

La commande ci-dessous a fonctionné pour moi

Version de Python - 2.7

paquet - python-jenkins

commande - $ pip install 'python-jenkins>=1.1.1'

0 votes

Cher downvoter, veuillez justifier pourquoi cette réponse a été downvoted ?

2 votes

Je n'ai pas voté à la baisse, mais je vois que cela ne répond pas à la question et ne fournit aucune information utile que le PO pourrait utiliser pour résoudre son problème.

9voto

0x5453 Points 2987

J'ai récemment rencontré un problème en utilisant pip 's -I drapeau que je voulais documenter quelque part :

-I se pas désinstaller le paquetage existant avant de continuer ; il sera simplement installé par-dessus l'ancien. Cela signifie que tous les fichiers qui devraient être supprimés entre les versions seront laissés en place. Cela peut provoquer un comportement étrange si ces fichiers partagent des noms avec d'autres modules installés.

Par exemple, disons qu'il y a un paquet nommé package . Dans l'un des package ils utilisent import datetime . Maintenant, en package@2.0.0 ce qui pointe vers la bibliothèque standard datetime mais dans package@3.0.0 ils ont ajouté un local datetime.py en remplacement de la version de la bibliothèque standard (pour une raison quelconque).

Maintenant, disons que j'exécute pip install package==3.0.0 mais je me suis rendu compte plus tard que je voulais en fait la version 2.0.0 . Si je lance maintenant pip install -I package==2.0.0 , l'ancien datetime.py ne sera pas supprimé, de sorte que tous les appels à import datetime importera le mauvais module.

Dans mon cas, cela s'est manifesté par des erreurs de syntaxe étranges parce que la version la plus récente du paquet a ajouté un fichier qui n'était compatible qu'avec Python 3, et lorsque j'ai rétrogradé les versions du paquet pour supporter Python 2, j'ai continué à importer le module exclusivement Python 3.

Sur cette base, je dirais que la désinstallation de l'ancien paquet est toujours préférable à l'utilisation de l'option -I lors de la mise à jour des versions des paquets installés.

1voto

Samarth Points 71

Il y a deux façons d'installer un paquet avec la version:-. A). pip install -Iv nom du paquet == version B). pip install -v nom du paquet == version

Pour A

Ici, si vous utilisez l'option -I lors de l'installation (lorsque vous ne savez pas si le paquet est déjà installé) (comme 'pip install -Iv pyreadline == 2.*' ou autre), vous installerez un nouveau paquet séparé avec le même paquet existant ayant une version différente.

Pour B

  1. Dans un premier temps, vous pouvez vérifier qu'il n'y a pas d'exigences non respectées. vérification des tuyaux

2.et ensuite voir ce qui est déjà installé en liste des pip

3.si la liste des paquets contient un paquet que vous souhaitez installer avec une version spécifique, alors la meilleure option est de désinstaller d'abord le paquet de cette version, en pip uninstall package-name

Et maintenant, vous pouvez réinstaller le même paquet avec une version spécifique. pip install -v nom du paquet==version Par exemple : pip install -v pyreadline == 2.*

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