Comment réparer “l'installation de python est corrompue”?


37

Je passais de 13.10 à 14.04 (dev pour le moment, stable en quelques heures) en utilisant do-release-upgradeet rencontrant le problème suivant:

Can not upgrade 

Your python install is corrupted. Please fix the '/usr/bin/python' symlink.

J'ai résolu le problème après avoir déconné un peu, alors j'aimerais partager ma solution ici. J'espère que cela pourrait aider quelqu'un.

Réponses:


53

Mon problème s'est avéré être uniquement dû à un /usr/bin/pythonlien symbolique modifié, comme suggéré dans le message d'erreur. J'utilisais update-alternativesavec /usr/bin/pythondonc ça pointait vers /etc/alternatives/python. Il s’est avéré que do-release-upgradec’est vraiment strict avec ce lien symbolique et que choisir simplement python2.7 avec update-alternativesn’est pas suffisant, j’ai donc fini par le forcer à son état initial:

sudo ln -sf /usr/bin/python2.7 /usr/bin/python

Et cela a résolu le problème.

Si cela ne fonctionne pas pour vous, alors je suppose que vous avez une installation python véritablement corrompue. Je suggère

sudo apt-get install --reinstall python

@BenjaminKohl Glad cela a aidé :)
4ae1e1

N'était-ce pas un /etc/alternatives/pythonlien symbolique /usr/bin/python2.7? Est-ce que quelque chose d'autre a une priorité plus élevée?
Heemayl

Je crains que vous ne /usr/bin/python2.7le /etc/alternatives/pythonrécupériez à l' envers. Le binaire est-il réel? Cela ne devrait jamais être le lien symbolique. Le lien symbolique est le .
Heemayl

@heemayl Désolé, mal interprété ton commentaire + faute de frappe de ma part. /usr/bin/pythonest un lien symbolique vers /etc/alternatives/python(bien sûr, /usr/bin/python2.7c'est le binaire, mais ce n'est pas le problème ici).
4ae1e1

Et oui, les /etc/alternatives/pythonliens symboliques sont-ils liés à ce que vous avez sélectionné (pas nécessairement /usr/bin/python2.7- pourquoi auriez-vous même besoin update-alternativesde cela dans ce cas?), Mais le point est que la liaison symbolique n'est pas autorisée pour /usr/bin/pythonvous do-release-upgrade.
4ae1e1

16

celui-ci est correct:

sudo update-alternatives --remove-all python
sudo ln -sf /usr/bin/python2.7 /usr/bin/python

2
C'est absolument correct. Cela ne fonctionnerait pas pour moi jusqu'à ce que je supprime aussi tout ce qui existe déjà avecupdate-alternatives --remove-all python
TryTryAgain

5

Dans Ubuntu 18.10, le même problème se pose.

Le répertoire / usr / bin / python est lié à une version antérieure. Même plus tard que 2.7 sont disponibles, mais ce processus super intelligent demande (dans 18.10!) P 2.7. Alors je l'ai donné et il a été accepté.

Cela l'a résolu pour moi:

1) supprimez / usr / bin / python en faisant sudo rm /usr/bin/python

2) Créer un nouveau lien sudo ln -sf /usr/bin/python2.7 /usr/bin/python

En 18h10 je ne pouvais pas utiliser sudo update-alternatives --remove-all python ou sudo apt-get install --reinstall python.

Travaille pour moi. J'espère que cela vous aidera aussi.


ls -sfRemplace la cible de manière 1) est inutile, et 2) correspond exactement à ce que ma réponse vous a demandé de faire. Quelle perte ...
4ae1e1

Ne vous laissez pas aller: votre citation est fausse et j'ai dit le contraire de ce que vous dites à propos de "... --installez python". Oui, mon expérience avec 18.10 est différente de la vôtre et je l'explique. Pas besoin du tout de commentaires téméraires.
opinion_no9

Saw "Si cela ne fonctionne pas pour vous, alors je suppose que vous avez une installation python véritablement corrompue."?
4ae1e1

En gros, la leçon est la suivante: vous lisez les environs et vous comprenez pourquoi, pas seulement cherrypick, quels que soient les codes bloqués, collez-les dans votre terminal (dangereux) et voyez ce qui reste bloqué. À propos, votre sudo rmest toujours inutile.
4ae1e1 le

1
C'est vrai, ça marche le 18.10. Merci.
Ailes

1

Pour Ubuntu 19.04, la version par défaut de python est 3.7. La même erreur s'est produite lors de la mise à niveau vers Ubuntu 19.10 et les éléments suivants ont été utiles:

sudo apt-get install --reinstall python3
sudo ln -sf /usr/bin/python3.7 /usr/bin/python3

Au cas où vous auriez de très graves problèmes avec votre paquet python, la seule solution consiste à forcer son retrait, puis à le réinstaller:

sudo dpkg --remove --force-remove-reinstreq --force-depends python3
sudo apt-get -f install

0

Si vous rencontrez ce problème, /usr/bin/python3alors:

sudo update-alternatives --remove-all python3
sudo ln -sf /usr/bin/python3.6 /usr/bin/python3

Assurez-vous de créer un lien symbolique python3.6et non 3.7. Au moins, cela était nécessaire lors de la mise Ubuntu 18.10à niveau vers 19.04.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.