Cách chuyển đổi an toàn sang python3 theo mặc định sau khi nâng cấp lên Ubuntu 18.04


12

python3là phiên bản python mặc định trong Ubuntu 18.04 và python2sẽ không được gửi theo mặc định trên bản cài đặt Ubuntu 18.04 mới, làm cách nào tôi có thể python3mặc định sau khi nâng cấp lên Ubuntu 18.04 (từ 16.04). Hiện tại, sau khi nâng cấp lên python2nó vẫn được mặc định (ví dụ: pythonlệnh hướng đến python2v.v.). Tuy nhiên, việc xóa pythongói sẽ dẫn đến việc loại bỏ quá nhiều gói dựa vào nó, vì vậy đây không phải là một lựa chọn ở đây.

Lý tưởng nhất, tôi muốn loại bỏ sự python2phụ thuộc càng nhiều càng tốt. Có lẽ quy trình nâng cấp có thể được thiết kế theo cách nó kiểm tra tất cả các gói, cho dù chúng vẫn thực sự phụ thuộc vào python2phụ thuộc và do đó thu thập tất cả các python2phụ thuộc có thể được thay thế bằng một python3phụ thuộc tương đương (sẽ được giải quyết bằng nâng cấp sau đó).


Vui lòng kiểm tra từ ngữ mới. Trước đây có phần không rõ ràng về những gì bạn đang hỏi. Đã cố gắng sắp xếp điều này từ tiêu đề của bài viết của bạn.
Juan Antonio

Cảm ơn rất nhiều vì đã chỉnh sửa @JuanAntonio. Họ phần lớn các chỉnh sửa trông tốt. Chỉ cần thực hiện một số chỉnh sửa để đưa câu hỏi này đi đúng hướng.
zazi

Điều này có an toàn không, kết thúc của việc loại bỏ python2 hay để lại nó là gì. Nếu nó ở đó thì cần một cái gì đó!
George Udosen

2
Trong thực tế, python 2 không được cài đặt theo mặc định vào ngày 18.04, vì vậy nếu bạn có nó, đó là do bạn đã cài đặt một số gói bổ sung (hoặc đã nâng cấp với các gói đã nói), vẫn yêu cầu python 2. Đó là mặc định 3.x không có nghĩa là không có nhiều thứ sử dụng 2.x trong kho lưu trữ. 20.04 chắc chắn sẽ không còn python 2.x nữa, vì nó sẽ không còn được hỗ trợ bởi thượng nguồn tại thời điểm đó.
dobey

"Kết thúc của việc loại bỏ python2" là gì - một hệ thống khá sạch sẽ. cài đặt python của tôi bằng cách nào đó bị hỏng sau khi nâng cấp.
zazi

Câu trả lời:


11

Bài đăng này hơi cũ, nhưng tôi tin rằng có một sự thay thế tốt hơn tồn tại: enter update-alternatives. Sau đây sẽ đặt /usr/bin/pythonmặc định của bạn thành 2.7 nhưng có sẵn 3.6 khi bạn muốn:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

Ưu tiên cao nhất ở đây được sử dụng làm lựa chọn "tự động" cho /usr/bin/pythonnhưng bạn có thể dễ dàng chuyển đổi bằng cách chạy sudo update-alternatives --config python.


1
câu trả lời tốt đẹp trong trường hợp của tôi, python2.7 đã được cài đặt bởi nodejs / npm và bằng cách nào đó được đặt làm mặc định cho python. Tôi đã sử dụng sudo update-alternatives --remove-all pythonđể loại bỏ tất cả python, và sau đó thêm con trăn duy nhất tôi muốn sử dụng sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Cũng tốt để biết là sudo update-alternatives --list pythonđể xem những gì là những gì.
philshem

1
bạn cũng có thể muốn làm sudo apt install python3-pipsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel

10

Để loại bỏ hoàn toàn python2, bạn phải xóa python2.x-minimalgói được thực hiện bởi

sudo apt purge python2.x-minimal

thay thế x bằng phiên bản chính xác của python 2 trên hệ thống của bạn. Nhưng hãy chắc chắn xem xét các gói khác bị xóa vì bạn có thể đã mang các gói vẫn phụ thuộc vào python 2 ngay cả sau khi nâng cấp và các gói đó cũng sẽ bị gỡ cài đặt và ngừng hoạt động.


Không có thứ gọi là trình thông dịch python 'mặc định' bởi vì nó chỉ phụ thuộc vào tệp thực tế nào /usr/bin/pythontrỏ tới, để thay đổi tệp này thành python sử dụng lnlệnh để cập nhật liên kết, ví dụ: giả sử bạn muốn nó trỏ đến python 3.6

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

Ngoài ra, nếu bạn chỉ muốn điều này cho người dùng của mình, bạn có thể đặt nó làm bí danh của mình trong đó .bashrc, để làm điều đó, mở ~/.bashrctrong trình chỉnh sửa bạn chọn và thêm dòng sau

alias python='python3.6' 

"vì bạn có thể đã mang các gói vẫn phụ thuộc vào python 2 ngay cả sau khi nâng cấp" <- có, và ý định của tôi là loại bỏ sự phụ thuộc này vì nó không thực sự cần thiết, vì Ubuntu 18.04 chạy chúng mà không python2phụ thuộc bằng cách sử dụng mặc định của nó python3phụ thuộc / gói.
zazi

1
Điều này có an toàn không, kết thúc của việc loại bỏ python2 hay để lại nó là gì. Nếu nó ở đó thì cần một cái gì đó!
George Udosen

0

Trên 16.04 của tôi /usr/bin/pythonchỉ là một liên kết đến /usr/bin/python2.7vì vậy tôi giả sử bạn sẽ phải thay đổi liên kết này để trỏ đến /usr/bin/python3.x( xtất nhiên là đủ ).


bạn cũng có thể trỏ /usr/bin/pythonđến /usr/bin/python3, đó là một liên kết đến phiên bản python3 mới nhất được cài đặt. Hoặc chỉ là một bí danh hoặc một chức năng trong của bạn ~/.bashrc. Hàng tấn tùy chọn ;-)
Kev Inski

không, tôi đoán rằng đây không thực sự là điều tôi muốn làm ở đây. Tôi muốn thoát khỏi python2hệ thống của mình (vì đây là trường hợp mặc định khi cài đặt python3python2
ubfox

2
@zazi Tôi không khuyên bạn nên thanh trừng python2. Có vẻ như nhiều gói khác phụ thuộc vào nó. Bạn có bất kỳ nhược điểm bằng cách giữ python2cài đặt?
Kev Inski

Tôi không có bất lợi gì trong việc python2cài đặt, nếu thực sự cần thiết, nhưng tôi muốn đặt rõ ràng python3là mặc định, nghĩa là loại bỏ python2càng thường xuyên càng tốt (và cài đặt Ubuntu 18.04 sạch sẽ chứng minh rằng điều này là có thể).
zazi

Quả thực là như vậy.
Kev Inski
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.