web-dev-qa-db-fra.com

Comment mettre à jour le paquet PyYAML de disutils?

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?

31
sphoenix

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

18
sphoenix

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.

41
Fenhl

Problème:

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.

Solution: supprimer le paquetage dist et exécuter

Sudo rm -rf /usr/lib/python3/dist-packages/yaml

Sudo rm -rf /usr/lib/python3/dist-packages/PyYAML-*

Supprimer le dossier de distutils fonctionne

6
Jinna Balu

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é.

1
Baptiste Florentin