Wie behebe ich "Python-Installation ist beschädigt"?

37

Ich habe ein Upgrade von 13.10 auf 14.04 durchgeführt (Dev fürs Erste, in wenigen Stunden stabil) do-release-upgradeund dabei folgendes Problem festgestellt:

Can not upgrade 

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

Ich habe das Problem gelöst, nachdem ich ein bisschen rumgespielt habe, also möchte ich meine Lösung hier teilen. Hoffe das könnte jemandem helfen.

4ae1e1
quelle

Antworten:

53

Es stellte sich heraus, dass mein Problem ausschließlich auf einen geänderten /usr/bin/pythonSymlink zurückzuführen war, wie in der Fehlermeldung vorgeschlagen. Ich habe update-alternativesmit verwendet, /usr/bin/pythonalso zeigte es auf /etc/alternatives/python. Es stellte sich heraus, dass do-release-upgradedies bei diesem Symlink sehr streng ist und update-alternativeses nicht ausreicht, nur python2.7 mit auszuwählen.

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

Und das löste das Problem.

Wenn dies bei Ihnen nicht funktioniert, haben Sie vermutlich eine wirklich beschädigte Python-Installation. Ich würde vorschlagen

sudo apt-get install --reinstall python
4ae1e1
quelle
@ BenjaminKohl Froh, dass es geholfen hat :)
4ae1e1
War nicht /etc/alternatives/pythonverbunden mit /usr/bin/python2.7? Hat etwas anderes höhere Priorität?
Heemayl
Ich fürchte, Sie bekommen es rückwärts ... /usr/bin/python2.7ist die eigentliche Binärdatei, es sollte niemals der Symlink sein, der Symlink ist der ... /etc/alternatives/pythonStört es Sie, es noch einmal zu überprüfen?
Heemayl
@heemayl Entschuldigung, ich habe Ihren Kommentar + Tippfehler falsch verstanden. /usr/bin/pythonist ein Symlink zu /etc/alternatives/python(natürlich /usr/bin/python2.7ist das die Binärdatei, aber das ist hier nicht das Problem).
4ae1e1
Und ja, /etc/alternatives/pythonist dann mit dem, was Sie ausgewählt haben , verknüpft (nicht unbedingt /usr/bin/python2.7- warum würden Sie update-alternativesin diesem Fall überhaupt brauchen ?), Aber der Punkt ist, dass das Verknüpfen für /usr/bin/pythonSie nicht zulässig ist do-release-upgrade.
4ae1e1
16

Dieser ist richtig:

sudo update-alternatives --remove-all python
sudo ln -sf /usr/bin/python2.7 /usr/bin/python
Vitaliy Kulikov
quelle
2
Das ist absolut richtig. Es würde für mich nicht funktionieren, bis ich auch zuerst alle vorhandenen mitupdate-alternatives --remove-all python
TryTryAgain
5

In Ubuntu 18.10 gibt es immer noch das gleiche Problem.

Das / usr / bin / python ist mit einer älteren Version verknüpft. Noch später als 2.7 sind verfügbar, aber dieser superschicke Prozess fragt (in 18.10!) Nach P 2.7. Also gab ich es und es wurde angenommen.

Das hat es für mich gelöst:

1) lösche / usr / bin / python dabei sudo rm /usr/bin/python

2) Erstellen Sie einen neuen Link sudo ln -sf /usr/bin/python2.7 /usr/bin/python

In 18.10 konnte ich NICHT sudo update-alternatives --remove-all python oder verwenden sudo apt-get install --reinstall python.

Funktioniert bei mir. Hoffe es hilft dir auch.

opinion_no9
quelle
ls -sfüberschreibt das Ziel, also 1) ist sinnlos und 2) ist genau das, was meine Antwort Ihnen gesagt hat. Was für eine Verschwendung ...
4ae1e1
Dont Rant: Dein Zitat ist falsch und ich habe das Gegenteil von dem gesagt, was du über "... --python neu installieren" sagst. Ja, meine Erfahrung mit 18.10 unterscheidet sich von Ihrer und ich erkläre dies. Überhaupt kein Grund für dreiste Kommentare.
opinion_no9
Saw "Wenn dies bei Ihnen nicht funktioniert, haben Sie vermutlich eine wirklich beschädigte Python-Installation."
4.
Grundsätzlich lautet die Lektion: Sie lesen die Umgebung und lernen, warum Sie nicht nur die vorhandenen Codeblöcke cherrypicken, sondern sie in Ihr Terminal einfügen (gefährlich) und nachsehen, welche Sticks vorhanden sind. Übrigens ist Ihr sudo rmnoch sinnlos.
4.
1
Richtig, es funktioniert am 18.10. Vielen Dank.
Flügel
1

Für Ubuntu 19.04 ist die Standard-Python-Version 3.7. Beim Upgrade auf Ubuntu 19.10 ist derselbe Fehler aufgetreten. Dabei hat Folgendes geholfen:

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

Falls Sie sehr schwerwiegende Probleme mit Ihrem Python-Paket haben, müssen Sie es nur zwingen, es zu entfernen und anschließend erneut zu installieren:

sudo dpkg --remove --force-remove-reinstreq --force-depends python3
sudo apt-get -f install
Vibhu Vaibhav
quelle
0

Wenn Sie auf Folgendes stoßen /usr/bin/python3:

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

Stellen Sie sicher, symlink python3.6und nicht 3.7. Zumindest war das beim Upgrade Ubuntu 18.10auf erforderlich 19.04.

Jana
quelle