J'essayais d'installer chatterbot qui a une dépendance sur PyYAML = 3.12. Dans ma machine Ubuntu installée PyYAML la version est 3.11. J'ai donc utilisé la commande suivante pour mettre à niveau PyYAML:
Sudo -H pip3 install --upgrade PyYAML
Mais cela donne l'erreur suivante:
Impossible de désinstaller 'PyYAML'. C'est un projet installé par distutils et nous ne pouvons donc pas déterminer avec précision les fichiers qui en font partie, ce qui ne conduirait qu'à une désinstallation partielle.
Ma version pip est la version 10.0.0.
Comment résoudre ce problème?
J'ai trouvé dans ce numéro de Github que le pip 10 ne désinstalle plus les paquets distutils . Donc, j'ai rétrogradé à pip 8.1.1. Et maintenant ça marche.
Si quelqu'un qui consulte cette question sait comment désinstaller ou mettre à niveau le paquet distutils avec le pip 10.0.0, veuillez me le faire savoir ici. :)
(Si quelqu'un a besoin)
Et pour rétrograder pip, j’ai utilisé ce qui suit:
Sudo -H pip3 install pip==8.1.1
Essayez d’utiliser le drapeau --ignore-installed
:
Sudo -H pip3 install --ignore-installed PyYAML
Cela fonctionne car pour mettre à niveau un paquet, pip
désinstalle d'abord l'ancienne version, puis installe la nouvelle version. C'est l'étape de désinstallation qui échoue pour les paquets distutils. Avec l'indicateur --ignore-installed
, l'étape de désinstallation est ignorée et la nouvelle version est simplement installée par-dessus l'ancienne.
Impossible de désinstaller 'PyYAML'. C'est un projet installé par distutils et nous ne pouvons donc pas déterminer avec précision les fichiers qui en font partie, ce qui ne conduirait qu'à une désinstallation partielle.
Sudo rm -rf /usr/lib/python3/dist-packages/yaml
Sudo rm -rf /usr/lib/python3/dist-packages/PyYAML-*
Supprimer le dossier de distutils fonctionne
Personnellement, PyYAML a été installé sur anaconda; je viens d’exécuter "conda remove PyYAML", puis l’exécution de ma commande pip a fonctionné.