Làm cách nào để xóa python 2.7 sau khi cài đặt python 3.3?


19

Tôi đã cài đặt thành công python 3.3 trên Ubuntu 12.10. Vì tôi không cần nhiều phiên bản của python, tôi muốn xóa python 2.7 hiện có. Khi tôi cố gắng làm điều đó, sử dụng

sudo apt-get remove python2.7

Ubuntu cảnh báo tôi rằng có hàng tấn các thành phần phụ thuộc hệ thống cũng sẽ bị xóa. Trông thật đáng sợ.

Vì vậy, có cách nào để loại bỏ python 2.7 mà không cần loại bỏ các thành phần phụ thuộc hệ thống, hoặc tôi có thể hướng những người phụ thuộc đó sử dụng python 3.3 không?


2
Tôi sẽ không khuyên bạn nên nó. Phiên bản Python hoàn toàn không tương thích, vì vậy các tập lệnh cũ hơn có thể gặp sự cố nếu bạn không có phiên bản chính xác.
tikend

bạn đã đúng, python3.3 đã tuyên bố rằng nó không tương thích với python 2.7. Vì vậy, tôi tốt hơn chỉ nên giữ nó. Cảm ơn vì lời khuyên!
phượng hoàng bai

Câu trả lời:


23

Bạn không thể.

Từ wiki / Python của Ubuntu :

Kế hoạch dài hạn hơn (ví dụ 14.04)

Chuyển Python 2 sang vũ trụ, chuyển tất cả các ứng dụng Python thành chính 3. Chúng tôi sẽ không bao giờ loại bỏ hoàn toàn Python 2.7, nhưng vì cũng sẽ không bao giờ có Python 2.8 và Python 2.7 sẽ gần 4 tuổi vào thời điểm đó Bản phát hành 14.04 LTS, đã đến lúc đưa Python 2 vào vũ trụ.

Điều này có nghĩa là rất nhiều gói cơ sở có phụ thuộc cứng vào 2.7 và sẽ vẫn mất rất nhiều thời gian để di chuyển mọi thứ. Lưu ý rằng Python 3 có nhiều thay đổi không tương thích ngược - đó không phải là một bản nâng cấp gói thông thường.

Nếu bạn thực sự muốn thoát khỏi Python 2.7, bạn sẽ phải chờ bản phát hành 14.04, nhưng không có gì đảm bảo.


3
Bây giờ là 16.04.
muru

Bây giờ là 18.04.
Francesco Pasa

Đó là 19.04 fu #! &
Now

5

Bạn không thể, và bạn không thực sự muốn.

Python thay đổi mạnh mẽ giữa 2.7 và 3.0 và phá vỡ khả năng tương thích ngược. Các tập lệnh Python được viết cho 2.7, được sử dụng để hỗ trợ một lượng lớn cơ sở hạ tầng của hệ thống, sẽ không nhất thiết phải hoạt động đúng với Python 3.x. Các tập lệnh này cần được cập nhật để hoạt động với phiên bản mới và cho đến khi điều đó xảy ra, bạn sẽ cần giữ Python 2.7.

Đây là lý do tại sao bạn nhận thấy một số lượng lớn các phụ thuộc như vậy vào Python cũ - hệ thống phụ thuộc vào nó. Ngoài ra, không có hại khi cài đặt cả hai phiên bản Python trên cùng một hệ thống. Và bạn có thể bắt gặp các ứng dụng trong tương lai vẫn sử dụng Python 2.7, vì vậy giữ nó xung quanh là một ý tưởng tốt.


2

Đến đây vào năm 2019 vì tôi phát triển trong Python3 theo mặc định và đi đến kết luận giống như OP sau khi thấy những gì sẽ bị xóa sau khi chạy apt purge python

Vì điều tôi thực sự muốn là gọi Python3 chỉ python, tôi đã chạy

sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python

Theo cách này, nếu Python2.7 vẫn cần thiết, nó có thể được gọi một cách rõ ràng python2.7trong khi gọi đơn giản pythonsẽ mặc định là Python3 vì liên kết tượng trưng.

Tôi không có bất kỳ tập lệnh cấp bash nào gọi python2.7 pythonvì vậy thay đổi này sẽ không gây gián đoạn - trong khi các hệ thống khác sẽ cần các tập lệnh của chúng được điều chỉnh phù hợp nếu chúng thực hiện.

Rào cản chính đối với phân phối chuyển đổi lệnh python từ python2 sang python3 không bị phá vỡ trong phân phối, mà thay vào đó là phá vỡ các tập lệnh bên thứ ba riêng tư được phát triển bởi sysadmin và những người dùng khác.

- Lệnh "trăn" trên các hệ thống tương tự Unix

Câu trả lời này không phải là câu trả lời trực tiếp cho OP, nhưng như một người có câu hỏi tương tự, đây là chức năng tôi đang tìm kiếm khi tôi nghĩ đến việc loại bỏ 2.7. Thay vì xóa, chỉ cần ưu tiên cái nào sẽ được sử dụng python.


1
Nó đánh tôi là một ý tưởng tồi. Bất kỳ tập lệnh cũ nào được tạo cho Python 2 sẽ gọi /usr/bin/python, trong khi hầu hết mọi tập lệnh được tạo cho Python 3 sẽ nhận thức được sự thay đổi và gọi python3vào thời điểm hiện tại. Để cho pythonđiểm python2.7ít có khả năng phá vỡ mọi thứ.
vidarlo

Tôi nói nó phụ thuộc vào môi trường, như tôi đã nói tôi không tạo các kịch bản yêu cầu python2 và hoạt động trong 3 - trong khi nếu tôi thực hiện một thay đổi như thế này trên một trong các trạm của chúng tôi khi chạy các kịch bản tự động thì sẽ rất gián đoạn .
saniboy

Có quy trình hệ thống cụ thể nào bạn có thể liệt kê cuộc gọi / usr / bin / python không? Tôi luôn sẵn sàng thay đổi suy nghĩ của mình khi được cung cấp thông tin mới
saniboy

Tôi tìm thấy khá nhiều trong 18.04. grep -r "/usr/bin/python" /usr/bin/sẽ cung cấp cho bạn một cái nhìn tổng quan ngắn gọn. Nó có thể sẽ không vô hiệu hóa hệ thống của bạn, nhưng nó có thể làm cho một số thứ không hoạt động. Chẳng hạn solaar.
vidarlo

1
Trên hệ thống tôi đã kiểm tra, có 39 cái không tạo tham chiếu rõ ràng cho python3 hoặc python2. Tất cả những thứ đó có lẽ là python2. Điều này tất nhiên phụ thuộc vào những gì bạn đã cài đặt, nhưng tôi thấy không có lý do lớn để làm điều này cả ...
vidarlo
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.