J'ai récemment rencontré un problème lors de l'utilisation pipdu -Idrapeau de que je voulais documenter quelque part:
-Ine pas désinstaller le package existant avant de poursuivre; il suffit de l'installer sur l'ancien. Cela signifie que tous les fichiers qui devraient être supprimés entre les versions seront à la place laissés en place. Cela peut provoquer un comportement étrange si ces fichiers partagent des noms avec d'autres modules installés.
Par exemple, supposons qu'il existe un package nommé package. Dans l'un des packagefichiers s, ils utilisent import datetime. Maintenant, dans package@2.0.0, cela pointe vers le datetimemodule de bibliothèque standard , mais dans package@3.0.0, ils ont ajouté un local datetime.pyen remplacement de la version de bibliothèque standard (pour une raison quelconque).
Disons maintenant que je cours pip install package==3.0.0, mais réalisez plus tard que je voulais vraiment une version 2.0.0. Si je lance maintenant pip install -I package==2.0.0, l'ancien datetime.pyfichier ne sera pas supprimé, donc tout appel à import datetimeimportera le mauvais module.
Dans mon cas, cela s'est manifesté par d'étranges erreurs de syntaxe car la nouvelle version du package a ajouté un fichier qui n'était compatible qu'avec Python 3, et lorsque j'ai rétrogradé les versions du package pour prendre en charge Python 2, j'ai continué d'importer le module Python-3 uniquement.
Sur cette base, je dirais que la désinstallation de l'ancien package est toujours préférable à l'utilisation -Ilors de la mise à jour des versions de package installées.
pip install MySQL_python==1.8.9