Mengapa bukan python 3 biner python default?

42

Saya mengetik pythondi jendela terminal. Saya mendapatkan Python 2.7 dan bukan Python 3.5. Menurut dokumen, Python 3.5 harus dimuat sebelumnya.

givonz
sumber
1
Jika Anda mengatur lingkungan virtual menggunakan: "python3 -m venv my-venv", maka dari terminal mana saja aktifkan lingkungan virtual itu dengan memanggil "sumber ... / my-env / bin / aktifkan", maka python 3.5 akan menjadi default di terminal itu. Anda dapat memeriksa versi default saat ini dengan memanggil "python -V".
Craig Hicks
sementara jawaban Anda sangat membantu, saya bertanya mengapa. bukan bagaimana caranya. dan, itulah debat besar. sini. mengapa versi yang lebih lama secara default, bukan versi saat ini.
givonz
1
Anda benar tentang "komentar" saya! Itulah sebabnya saya menulis komentar dan bukan jawaban.
Craig Hicks

Jawaban:

56

Saya tidak tahu "docs" apa yang Anda baca atau apa yang mereka katakan, tetapi /usr/bin/pythonitu hanyalah tautan simbolis ke versi default python, dalam hal ini 2.7, yang merupakan hasil dari hanya mengetik pythondi terminal. Ini adalah hasil dari PEP 394 yang mendefinisikan itu

  • untuk saat ini, semua distribusi harus memastikan bahwa pythonmengacu pada target yang sama denganpython2 .

type pythondan file /usr/bin/pythonakan mengkonfirmasi ini.

Alasan untuk pengaturan ini selain dari konvensi, adalah bahwa paket source python-default di Xenial adalah versi 2.7.11 , sehingga tautan simbolik python menunjuk ke versi ini.

Untuk menggunakan python 3 Anda harus eksplisit dan mengetikkan python3baris perintah, yang direkomendasikan jika Anda memerlukan versi tertentu, ini juga bisa dilakukan dengan python 2, mengetik python2. Ubuntu menyertakan versi python 2 dan 3 secara default di semua versi saat ini.

Ada rencana untuk memigrasi semuanya ke python 3 dan menandainya sebagai default.

Braiam
sumber
Ini mungkin melanggar plugin rhythmbox-zeitgeist yang bergantung pada zeitgeiigeist-python3 tetapi tidak dapat menemukannya.
Khurshid Alam
2
Ini adalah dokumen yang diartikan OP.
SaidbakR
10

Untuk mendapatkan Python 3.5 REPL atau menjalankan skrip yang kompatibel, ketik python3. Ini untuk menjaga kompatibilitas dengan semua legacy python 2.x (yang selalu, dan akan tetap terhubung dengan python).

Tanda hubung dapat menemukan pythonjika Anda mengatur .desktopfile untuk itu ~/.local/share/applications/, untuk membuka terminal dan memulai REPL misalnya. Tidak ada lingkungan GUI REPL default untuk python, dan harapan antarmuka normal adalah bahwa pengguna akan pergi ke terminal.

Pembicaraan tentang python 3.5 menjadi default adalah pengelola mem-porting semua skrip sistem dari python 2.x ke python 3.x, bukan bahwa python 3 akan menggantikan python 2 dalam semua kasus.

Andrew Keech
sumber
jadi, saya kira pertanyaan yang benar adalah, bagaimana cara menambahkan python3 ke jalur saya, sehingga dijalankan secara otomatis?
givonz
maksud Anda, bagaimana Anda mendapatkan skrip python untuk dieksekusi seperti program yang dikompilasi?
Andrew Keech
Terima kasih, terima kasih. cukup ketik python3 pada prompt perintah.
givonz
2
AIUI apa yang harus dilakukan dengan / usr / bin / python dalam jangka panjang masih merupakan pertanyaan terbuka. Praktik terbaik untuk skrip python2 adalah menggunakan python2 secara eksplisit.
Peter Green
1
daripada menggunakan #!/usr/bin/python3(atau #!/usr/bin/python2) dalam skrip, lebih baik menggunakan (hanya untuk python, khususnya) #!/usr/bin/env python3jika Anda ingin itu menjadi portabel jarak jauh. Untuk sebagian besar, ini hanya dokumentasi, karena dalam banyak kasus itu akan tetap dipanggil menggunakan $ python3 your_pyprogram.py.
michael
4

Anda menganggap bahwa Python default harus tersedia sebagai python. Anggapan itu salah.

Pada sistem yang dilengkapi dengan Python 3 "preloaded" dan tidak ada Python 2 sama sekali, hanya akan ada python3dan tidak ada python.

Kode yang ditulis untuk Python 3 harus selalu mencari penerjemah yang dipanggil python3. Kode yang ditulis untuk Python 2 akan dicari secara historis python.

Mungkin ada saatnya, mungkin beberapa dekade dari sekarang, di mana hampir tidak ada yang mengingat Python 2, ketika pythonmulai merujuk python3. Ini murni untuk kenyamanan, dan bisa dan tidak boleh dilakukan prematur, jika sama sekali! Tidak ada terburu-buru, karena dampak berikut:

Sistem "Saat ini lama" tidak akan memiliki pengetahuan tentang python2, hanya python, jadi sangat masuk akal untuk menjaga kode Python 2 mencari python. Ini adalah alasan mengapa pythonharus merujuk ke Python 2 untuk "selama kode Python 2 ada".

Kode baru yang ditulis untuk Python 2, jika itu masuk akal, dapat dicari dengan sempurna python. Mungkin juga mencari python2, jika dimaksudkan untuk berjalan hanya pada sistem Python 3 sadar dan terawat (yang seharusnya menawarkan tautan tersebut).

Manfaat menggunakan kode Python 2 python2adalah tidak perlu sentuhan ekstra setelah pythonmulai merujuk python3, yang mungkin tidak pernah terjadi, atau sekali pythonhilang sama sekali, yang mungkin atau mungkin tidak terjadi. (Itu mungkin menjadi kenyataan, jika kode Python 2 mati setelah hipotesis Python 4 menjadi populer dengan penerjemahnya python4. - Karena membiarkannya menunjuk ke salah satu python3atau python4keduanya akan membingungkan.)

Robert Siemer
sumber
2

Versi Python kedua 2.x, 3.x tersedia. jika Anda memanggil python seperti yang ditunjukkan ke python 2.x itu akan memuat python 2.x

Gambar di bawah ini akan membantu Anda.

masukkan deskripsi gambar di sini

rɑːdʒɑ
sumber
1
bagaimana Anda mengetik perintah yang sama dan mendapatkan 2 hasil yang berbeda?
givonz
4
output yang berbeda dari doa kedua pythonadalah dari menggunakan <tab>untuk meminta autocompleter, yang kemudian menampilkan kemungkinan permutasi python*dan mengembalikan Anda ke prompt baru.
Andrew Keech
@ givonz, hmm saya menggunakan kunci TAB bro. itu bukan output. mungkin pola biner.
rɑːdʒɑ
Suara negatif untuk apa?
rɑːdʒɑ
2
Saya tidak downvote tapi saya pikir jawabannya harus menjelaskan mengapa 2 output pertama berbeda dan apa perannya apt-cache, terutama untuk pemula Ubuntu.
AL
2

Python 3.x harus bekerja dengan 16.04 - Sebenarnya, itu pasti AKAN bekerja. Saya memiliki Ubuntu 14.04 dan saya memiliki Python 3.4.3 - Yang harus Anda lakukan untuk mengujinya adalah mengetik python3dan itu akan memberi tahu Anda versi apa yang sedang Anda jalankan.

Danny
sumber
2
Yah saya tidak akan menelepon menggunakan ilmu komputer OS. Dan sebenarnya: Ubuntu adalah OS berbasis Linux dan bukan berbasis Unix.
magu_
saya belum memahami linux beda bet & unix selain beberapa perintah meminta & berbeda, tetapi perintah kata dekat. meskipun gui jauh lebih maju daripada yang saya lihat di solaris.
givonz
1
-1 Ini tidak menjawab pertanyaan mengapa .
David Foerster