Cara aman beralih ke python3 sebagai default setelah memutakhirkan ke Ubuntu 18.04

13

Karena python3ini adalah versi python default di Ubuntu 18.04 dan python2tidak akan dikirimkan secara default pada instalasi Ubuntu 18.04 yang baru, bagaimana saya bisa membuat python3default setelah upgrade ke Ubuntu 18.04 (dari 16.04). Saat ini, setelah upgrade ke python2sana masih default (mis. pythonPerintah mengarahkan ke python2dll.). Namun, membersihkan pythonpaket akan menghasilkan terlalu banyak paket yang bergantung padanya, jadi ini bukan opsi di sini.

Idealnya, saya ingin menghapus python2ketergantungan sebanyak mungkin. Mungkin proses upgrade dapat dirancang sedemikian rupa sehingga memeriksa semua paket, apakah mereka masih benar-benar bergantung pada python2dependensi dan dengan demikian mengumpulkan semua python2dependensi yang dapat diganti dengan python3dependensi yang setara (yang akan diselesaikan dengan peningkatan itu).

zazi
sumber
Silakan periksa kata-kata baru. Sebelumnya agak tidak jelas tentang apa yang Anda tanyakan. Mencoba memilah ini dari judul posting Anda.
Juan Antonio
Terima kasih banyak untuk hasil edit @JuanAntonio. Sebagian besar hasil edit terlihat bagus. Lakukan beberapa koreksi lebih lanjut untuk mendapatkan pertanyaan ini ke arah yang benar.
zazi
Apakah ini aman, apa akhir dari menghapus python2 atau membiarkannya. Jika ada di sana maka sesuatu membutuhkannya!
George Udosen
2
Sebenarnya python 2 tidak diinstal secara default di 18.04, jadi jika Anda memilikinya, itu karena Anda menginstal beberapa paket tambahan (atau melakukan upgrade dengan paket yang sudah diinstal), yang masih memerlukan python 2. Itu 3.x adalah default tidak berarti tidak ada lagi hal yang menggunakan 2.x dalam arsip. 20,04 pasti tidak akan memiliki python 2.x lagi, karena tidak akan lagi didukung oleh hulu pada saat itu.
dobey
"apa akhir dari menghapus python2" - sistem yang agak bersih. instalasi python saya di mana entah bagaimana rusak setelah peningkatan.
zazi

Jawaban:

13

Posting ini agak lama, tapi saya yakin ada alternatif yang lebih baik: masuk update-alternatives. Berikut ini akan mengatur Anda /usr/bin/pythonke default ke 2.7 tetapi memiliki 3.6 tersedia saat Anda inginkan:

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

Prioritas tertinggi di sini digunakan sebagai pilihan "otomatis" untuk /usr/bin/pythontetapi Anda dapat dengan mudah beralih dengan menjalankan sudo update-alternatives --config python.

Joshua Whitley
sumber
1
jawaban bagus. dalam kasus saya, python2.7 sedang diinstal oleh nodejs / npm dan entah bagaimana ditetapkan sebagai default untuk python. Saya dulu sudo update-alternatives --remove-all pythonmenghapus semua python, dan kemudian menambahkan satu-satunya python yang ingin saya gunakan sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Juga bagus untuk diketahui adalah sudo update-alternatives --list pythonuntuk melihat apa itu apa.
philshem
1
Anda mungkin juga ingin melakukannya sudo apt install python3-pipdansudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel
10

Untuk menghapus python2 sepenuhnya, Anda harus membersihkan python2.x-minimalpaket yang dikerjakan oleh

sudo apt purge python2.x-minimal

mengganti x dengan versi persis python 2 pada sistem Anda. Tetapi pastikan untuk melihat paket apa yang dihapus karena Anda mungkin telah membawa paket yang masih bergantung pada python 2 bahkan setelah upgrade, dan paket-paket itu akan dihapus instalasinya dan berhenti bekerja.


Tidak ada yang namanya interpreter python 'default' karena itu hanya tergantung pada file mana yang sebenarnya /usr/bin/pythonmenunjuk, untuk mengubahnya ke python menggunakan lnperintah untuk memperbarui tautan, misalnya katakanlah Anda ingin menunjuk ke python 3.6

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

Atau, jika Anda hanya menginginkan ini untuk pengguna Anda, Anda dapat mengaturnya sebagai alias Anda di .bashrc, untuk melakukannya, buka ~/.bashrcdi editor pilihan Anda dan tambahkan baris berikut

alias python='python3.6' 
Amith KK
sumber
"karena Anda mungkin telah membawa paket yang masih bergantung pada python 2 bahkan setelah upgrade" <- ya, dan maksud saya adalah untuk menghilangkan ketergantungan ini karena sebenarnya tidak diperlukan, karena Ubuntu 18.04 menjalankannya tanpa python2ketergantungan dengan menggunakan default-nya python3dependensi / paket.
zazi
1
Apakah ini aman, apa akhir dari menghapus python2 atau membiarkannya. Jika ada di sana maka sesuatu membutuhkannya!
George Udosen
0

Pada 16,04 saya /usr/bin/pythonhanya link ke /usr/bin/python2.7jadi saya menganggap Anda hanya perlu mengubah tautan ini untuk menunjuk ke /usr/bin/python3.x(dengan memadai xtentu saja).

xenoid
sumber
Anda juga bisa menunjuk /usr/bin/pythonke /usr/bin/python3, yang merupakan link ke versi python3 terbaru diinstal. Atau hanya sebuah alias atau fungsi di blog Anda ~/.bashrc.
Banyak
tidak, kurasa, ini bukan yang ingin kulakukan di sini. Saya ingin menyingkirkan python2di sistem saya (karena ini adalah kasus default ketika menginstal ubuntu 18,04 baru, di mana python3default dan python2tidak diinstal per default)
zazi
2
@zazi Saya tidak akan merekomendasikan membersihkan python2. Tampaknya banyak paket lain bergantung padanya. Apakah Anda memiliki kelemahan dengan tetap python2diinstal?
Kev Inski
Saya tidak memiliki kelemahan tetap python2diinstal, jika benar-benar diperlukan, tetapi saya ingin secara jelas menetapkan python3sebagai default, yaitu, menghapus python2sesering mungkin (dan instalasi bersih Ubuntu 18,04 menunjukkan bahwa ini mungkin).
zazi
Memang benar.
Kev Inski