“Python kurulumu bozuk” nasıl düzeltilir?


36

do-release-upgradeAşağıdaki problemi kullanarak 13 : 10'dan 14.04'e (şu an dev, birkaç saat içinde kararlı) geçiyordum :

Can not upgrade 

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

Bir süre uğraştıktan sonra sorunu çözdüm, bu yüzden çözümümü burada paylaşmak istiyorum. Umarım bu birine yardımcı olabilir.

Yanıtlar:


52

Benim sorunum sadece /usr/bin/pythonhata mesajında ​​önerildiği gibi değiştirilmiş bir sembolik bağlantıdan kaynaklanıyordu . Ben kullanıyordum update-alternatives, /usr/bin/pythonbu yüzden işaret ediyordu /etc/alternatives/python. Ortaya çıktı do-release-upgradebu sembolik bağla gerçekten sıkı ve sadece birlikte python2.7 seçerek update-alternativesBen orijinal durumuna zorlayarak bitti, yeterli değildir:

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

Ve bu sorunu çözdü.

Bu sizin için işe yaramazsa, sanırım gerçekten bozuk bir python kurulumunuz var. Öneririm

sudo apt-get install --reinstall python

@BenjaminKohl Yardım ettiğine sevindim :)
4ae1e1

/etc/alternatives/pythonLinklenmemiş miydi /usr/bin/python2.7? başka bir şey daha yüksek önceliğe sahip mi?
heemayl

Korkarım onu ​​geri alıyorsunuz .... /usr/bin/python2.7gerçek ikili, hiçbir zaman sembolik bağlantı olmamalı, sembolik bağlantı ise .. /etc/alternatives/pythontekrar kontrol etmeyi düşünüyor musunuz?
heemayl

@heemayl Üzgünüz, yorumunuzu yanlış yaz + yazım yanımdayım. /usr/bin/pythonsembolik köprü ise /etc/alternatives/python(elbette /usr/bin/python2.7ikili, ama bu Buradaki sorun değil).
4ae1e1

Ve evet, /etc/alternatives/pythono zaman seçtiğin şeye bağlanır (zorunlu değil /usr/bin/python2.7- neden update-alternativesbu durumda bile ihtiyacın olsun ki?), Ama asıl noktaya bağlamanın /usr/bin/pythonsenin için olduğu zaman izin verilmez do-release-upgrade.
4ae1e1

15

bu doğru:

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

2
Bu kesinlikle doğru. Ben de ilk önce update-alternatives --remove-all python
TryTryAgain

4

Ubuntu 18.10'da hala aynı sorun var.

/ Usr / bin / python daha eski bir sürüme bağlanmıştır. 2.7'den bile geçse, ancak bu süper akıllı süreç P 2.7 için soruyor (18.10'da!). Ben de verdim ve kabul edildi.

Bu benim için çözdü:

1) silmek / usr / bin / python yapıyor sudo rm /usr/bin/python

2) Yeni bir bağlantı oluştur sudo ln -sf /usr/bin/python2.7 /usr/bin/python

18.10'da sudo update-alternatives --remove-all python veya kullanamadım sudo apt-get install --reinstall python.

Benim için çalışıyor. Umarım size de yardımcı olur.


ls -sfHedefi geçersiz kılar, yani 1) anlamsızdır ve 2) tam olarak cevabımın size söylediği şeydir. Ne atık ...
4ae1e1

Atmayın: Teklifiniz yanlış ve "... - reinstall python" hakkında söylediklerinizin tam tersini söyledim. Evet, 18.10 ile olan deneyimim sizinkinden farklı ve bunu açıklıyorum. Brezilya'nın yorumlarına hiç gerek yok.
opinion_no9

Testere "Bu sizin için işe yaramazsa, o zaman sanırım gerçekten bozuk bir python kurulumunuz var."?
4ae1e1

Temel olarak, ders şu: çevreyi okuyup nedenini öğreniyorsunuz, sadece kod bloklarını ne olursa olsun şifrelemekle değil, onları terminalinize (tehlikeli) yapıştırmak ve ne yapışmasını görmek. Bu arada, senin sudo rmhala anlamsız.
4ae1e1

1
Doğru, 18.10'da çalışıyor. Teşekkürler.
Wings

1

İçin Ubuntu 19.04 varsayılan piton sürüm 3.7 olduğunu. Ubuntu 19.10'a yükseltme yaparken aynı hatayı aldım ve aşağıdakiler yardımcı oldu:

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

Python paketinizle ilgili çok ciddi sorunlarınız varsa, geriye kalan tek yol kaldırmaya zorlamak ve sonra yeniden yüklemektir:

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

0

Bu konuda bu konuda karşılaşırsanız /usr/bin/python3:

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

Bağlandığından python3.6ve olmadığından emin ol 3.7. Yükseltirken gerek olmadığına En azından Ubuntu 18.10için 19.04.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.