web-dev-qa-db-fra.com

pip ne peut pas désinstaller <package>: "Il s'agit d'un projet installé par distutils"

J'ai essayé d'installer le module Twilio:

Sudo -H pip install twilio

Et j'ai eu cette erreur:

Installing collected packages: pyOpenSSL
  Found existing installation: pyOpenSSL 0.13.1
Cannot uninstall 'pyOpenSSL'. It is a distutils installed project and             
thus we cannot accurately determine which files belong to it which 
would lead to only a partial uninstall.

Quelqu'un sait comment désinstaller pyOpenSSL?

16
rachelvsamuel

Cette erreur signifie que les métadonnées de ce paquet n'incluent pas la liste des fichiers qui lui appartiennent. Très probablement, vous avez installé ce paquet via le gestionnaire de paquets de votre système d'exploitation, vous devez donc utiliser celui-ci plutôt que pip pour le mettre à jour ou le supprimer également

Voir par exemple Mise à niveau vers pip 10: il s'agit d'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. · Issue # 5247 · pypa/pip pour un tel exemple où le paquet a été installé avec apt.


Sinon, selon vos besoins, il peut être plus productif de ne pas utiliser votre système Python et/ou son environnement global, mais de créer une installation et/ou un environnement privé Python. Il y a beaucoup d'options ici, y compris virtualenv, venv, pyenv, pipenv et installer Python de la source dans /usr/local ou $HOME/$HOME/.local (ou /opt/<whatever>).


Enfin, je dois commenter le commutateur souvent suggéré (par exemple, at pip 10 et apt: comment éviter les erreurs "Impossible de désinstaller X" pour les paquets distutils ) --ignore-installedpip.

Il peut fonctionner (éventuellement pendant un temps suffisant pour répondre aux besoins de votre entreprise), mais il peut tout aussi bien casser des éléments du système de manière imprévisible. Une chose est sûre: cela rend la configuration du système non prise en charge et donc non maintenable - car vous avez essentiellement écrasé les fichiers de votre distribution avec d'autres éléments arbitraires. Par exemple.:

  • Si les nouveaux fichiers sont incompatibles avec les anciens, les autres logiciels de la distribution conçus pour établir une liaison avec les originaux présenteront une erreur de segmentation ou un dysfonctionnement.
  • Si la nouvelle version comporte un ensemble de fichiers différent, vous obtiendrez un mélange d'anciens et de nouveaux fichiers qui risquerait de détruire les logiciels dépendants et le package lui-même.
  • Si vous modifiez ultérieurement le package avec le gestionnaire de packages de votre système d'exploitation, il écrasera les fichiers pip- installés, avec des résultats tout aussi imprévisibles.
  • S'il existe des éléments tels que des fichiers de configuration, les différences entre les versions peuvent également entraîner toutes sortes de problèmes.
21
ivan_pozdeev