Bagaimana cara memperbaiki "instalasi python rusak"?


37

Saya meningkatkan dari 13,10 ke 14,04 (dev untuk saat ini, stabil dalam beberapa jam) menggunakan do-release-upgradedan mengalami masalah berikut:

Can not upgrade 

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

Saya memecahkan masalah setelah sedikit bercanda, jadi saya ingin membagikan solusi saya di sini. Semoga ini bisa membantu seseorang.

Jawaban:


53

Masalah saya ternyata semata-mata karena perubahan /usr/bin/pythontautan seperti yang disarankan dalam pesan kesalahan. Saya menggunakan update-alternativesdengan /usr/bin/pythonbegitu itu menunjuk ke /etc/alternatives/python. Ternyata itu do-release-upgradesangat ketat dengan symlink ini dan hanya memilih python2.7 dengan update-alternativestidak cukup, jadi saya akhirnya memaksanya ke keadaan semula:

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

Dan itu memecahkan masalah.

Jika ini tidak berhasil untuk Anda, maka saya kira Anda memiliki instalasi python yang benar-benar rusak. Saya sarankan

sudo apt-get install --reinstall python

@BenjaminKohl Senang membantu :)
4ae1e1

Tidak /etc/alternatives/pythondisinkronkan dengan /usr/bin/python2.7? apakah ada hal lain yang memiliki prioritas lebih tinggi?
heemayl

Saya khawatir Anda mendapatkannya mundur .... /usr/bin/python2.7apakah biner yang sebenarnya, seharusnya tidak pernah menjadi symlink, symlink adalah /etc/alternatives/python.. apakah Anda keberatan memeriksanya lagi?
heemayl

@heemayl Maaf, salah membaca komentar Anda + salah ketik di bagian saya. /usr/bin/pythonadalah symlink ke /etc/alternatives/python(tentu saja /usr/bin/python2.7biner, tapi bukan itu masalahnya di sini).
4ae1e1

Dan ya, /etc/alternatives/pythonkemudian disinkronkan dengan apa pun yang Anda pilih (tidak harus /usr/bin/python2.7- mengapa Anda bahkan perlu update-alternativesdalam kasus itu?), Tetapi intinya adalah symlinking tidak diperbolehkan /usr/bin/pythonketika Anda do-release-upgrade.
4ae1e1

16

ini benar:

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

2
Ini benar sekali. Itu tidak akan bekerja untuk saya sampai saya juga pertama menghapus semua yang ada menggunakanupdate-alternatives --remove-all python
TryTryAgain

5

Di Ubuntu 18.10 masih ada masalah yang sama.

/ Usr / bin / python ditautkan ke versi yang lebih lama. Bahkan lebih dari 2,7 tersedia tetapi proses super pintar ini meminta (dalam 18.10!) Untuk P 2.7. Jadi saya berikan dan diterima.

Ini menyelesaikannya untuk saya:

1) hapus / usr / bin / python lakukan sudo rm /usr/bin/python

2) Buat tautan baru sudo ln -sf /usr/bin/python2.7 /usr/bin/python

Di 18.10 saya TIDAK bisa menggunakan sudo update-alternatives --remove-all python atau sudo apt-get install --reinstall python.

Bekerja untukku. Semoga ini bisa membantu Anda juga.


ls -sfmengesampingkan target jadi 1) tidak ada gunanya, dan 2) adalah persis apa jawaban saya katakan untuk Anda lakukan.
Sayang sekali

Jangan kata-kata kasar: Kutipan Anda salah dan saya mengatakan kebalikan dari apa yang Anda katakan tentang "... - Instal ulang python". Ya, pengalaman saya dengan 18.10 berbeda dari pengalaman Anda dan saya jelaskan ini. Tidak perlu sama sekali untuk komentar kurang ajar.
opinion_no9

Lihat "Jika ini tidak berhasil untuk Anda, maka saya kira Anda memiliki instalasi python yang benar-benar rusak."?
4ae1e1

Pada dasarnya, pelajarannya adalah: Anda membaca lingkungan dan mempelajari alasannya, bukan hanya ceripick apa pun blok kode yang ada, tempelkan ke terminal Anda (berbahaya), dan lihat tongkat apa. Ngomong-ngomong, Anda sudo rmmasih tidak berguna.
4ae1e1

1
Benar, ini bekerja pada 18.10. Terima kasih.
Sayap

1

Untuk Ubuntu 19.04 , versi python default adalah 3.7. Saya mendapat kesalahan yang sama saat memutakhirkan ke Ubuntu 19.10, dan yang berikut membantu:

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

Jika Anda memiliki masalah yang sangat serius dengan paket python Anda, satu-satunya cara yang tersisa adalah dengan paksa menghapusnya, dan kemudian instal ulang:

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

0

Jika Anda mengalami hal ini /usr/bin/python3maka:

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

Pastikan untuk symlink python3.6dan tidak 3.7. Setidaknya itu diperlukan saat meningkatkan Ubuntu 18.10ke 19.04.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.