Làm thế nào để sửa lỗi cài đặt python của python bị hỏng?


37

Tôi đã nâng cấp từ 13.10 lên 14.04 (hiện tại, ổn định trong vài giờ) bằng cách sử dụng do-release-upgradevà gặp phải sự cố sau:

Can not upgrade 

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

Tôi đã giải quyết vấn đề sau khi loay hoay một chút, vì vậy tôi muốn chia sẻ giải pháp của mình tại đây. Hy vọng điều này có thể giúp một ai đó.

Câu trả lời:


53

Vấn đề của tôi hóa ra chỉ là do một /usr/bin/pythonliên kết tượng trưng thay đổi như được đề xuất trong thông báo lỗi. Tôi đã sử dụng update-alternativesvới /usr/bin/pythonvì vậy nó được chỉ vào /etc/alternatives/python. Hóa ra điều đó do-release-upgradethực sự nghiêm ngặt với symlink này và chỉ chọn python2.7 update-alternativeslà không đủ, nên cuối cùng tôi đã buộc nó về trạng thái ban đầu:

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

Và điều đó đã giải quyết vấn đề.

Nếu điều này không phù hợp với bạn, thì tôi đoán bạn đã cài đặt một con trăn thực sự bị hỏng. Tôi muốn đề nghị

sudo apt-get install --reinstall python

@BenjaminKohl Vui mừng vì nó đã giúp :)
4ae1e1

Không liên /etc/alternatives/pythonkết với nhau /usr/bin/python2.7? làm cái gì khác có ưu tiên cao hơn?
heemayl

Tôi e rằng bạn đang nhận được nó ngược .... /usr/bin/python2.7là nhị phân thực tế, nó không bao giờ nên là liên kết tượng trưng, ​​liên kết tượng trưng là /etc/alternatives/python.. bạn có phiền kiểm tra lại không?
heemayl

@heemayl Xin lỗi, đọc sai nhận xét của bạn + lỗi đánh máy từ phía tôi. /usr/bin/pythonlà một liên kết tượng trưng đến /etc/alternatives/python(tất nhiên /usr/bin/python2.7là nhị phân, nhưng đó không phải là vấn đề ở đây).
4ae1e1

Và vâng, /etc/alternatives/pythonsau đó được liên kết với bất cứ điều gì bạn đã chọn (không nhất thiết /usr/bin/python2.7- tại sao bạn thậm chí cần update-alternativestrong trường hợp đó?), Nhưng quan điểm là liên kết tượng trưng không được phép /usr/bin/pythonkhi bạn do-release-upgrade.
4ae1e1

16

Điều này là chính xác:

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

2
Điều này là hoàn toàn chính xác. Nó sẽ không hoạt động đối với tôi cho đến khi tôi lần đầu tiên xóa tất cả hiện có bằng cách sử dụngupdate-alternatives --remove-all python
TryTryAgain

5

Trong Ubuntu 18.10 vẫn có vấn đề tương tự.

/ Usr / bin / python được liên kết với phiên bản cũ hơn. Thậm chí muộn hơn 2.7 là có sẵn nhưng quá trình siêu thông minh này đang yêu cầu (trong 18.10!) Cho P 2.7. Vì vậy, tôi đã cho nó và nó đã được chấp nhận.

Điều này đã giải quyết nó cho tôi:

1) xóa / usr / bin / python đang làm sudo rm /usr/bin/python

2) Tạo một liên kết mới sudo ln -sf /usr/bin/python2.7 /usr/bin/python

Trong 18.10 tôi KHÔNG thể sử dụng sudo update-alternatives --remove-all python hoặc sudo apt-get install --reinstall python.

Làm việc cho tôi. Mong nó cũng giúp được cho bạn.


ls -sfghi đè lên mục tiêu để 1) là vô nghĩa và 2) chính xác là những gì câu trả lời của tôi bảo bạn làm. Thật là lãng phí ...
4ae1e1

Đừng giận dữ: Câu nói của bạn sai và tôi đã nói ngược lại với những gì bạn nói về "... - cài đặt python". Vâng, trải nghiệm của tôi với 18.10 khác với bạn và tôi giải thích điều này. Không cần tất cả cho ý kiến ​​trơ trẽn.
Ý kiến_no9

Tôi thấy "Nếu điều này không hiệu quả với bạn, thì tôi đoán bạn đã cài đặt một con trăn bị hỏng thực sự."?
4ae1e1

Về cơ bản, bài học là: bạn đọc môi trường xung quanh và tìm hiểu lý do tại sao, không chỉ sử dụng bất kỳ khối mã nào, dán chúng vào thiết bị đầu cuối của bạn (nguy hiểm) và xem những gì gậy. Nhân tiện, bạn sudo rmvẫn vô nghĩa.
4ae1e1

1
Đúng, nó hoạt động vào ngày 18.10. Cảm ơn.
Sải cánh

1

Đối với Ubuntu 19.04 , phiên bản python mặc định là 3.7. Tôi đã gặp lỗi tương tự khi nâng cấp lên Ubuntu 19.10 và, sau đây đã giúp:

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

Trong trường hợp bạn gặp vấn đề rất nghiêm trọng với gói python của mình, cách duy nhất còn lại là buộc gỡ bỏ nó, sau đó cài đặt lại:

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

0

Nếu bạn gặp phải vấn đề này /usr/bin/python3thì:

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

Hãy chắc chắn để liên kết python3.6và không 3.7. Ít nhất đó là yêu cầu khi nâng cấp Ubuntu 18.10lên 19.04.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.