Perhatikan bahwa saya tidak lagi memperbarui jawaban ini. Saya memiliki tanya jawab Python 3 yang lebih lama di situs pribadi saya di http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html
Jawaban sebelumnya:
(Pembaruan status, September 2012)
Kami (yaitu pengembang inti Python) memperkirakan ketika Python 3.0 dirilis bahwa akan memakan waktu sekitar 5 tahun untuk 3.x untuk menjadi pilihan "default" untuk proyek-proyek baru di atas seri 2.x. Prediksi itu adalah mengapa periode pemeliharaan yang direncanakan untuk rilis 2.7 begitu lama.
Rilis asli Python 3.0 juga ternyata memiliki beberapa masalah kritis dengan kinerja IO yang buruk yang membuatnya tidak dapat digunakan untuk sebagian besar tujuan praktis, sehingga lebih masuk akal untuk memulai timeline dari rilis Python 3.1 pada akhir Juni, 2009. (Mereka Masalah kinerja IO juga merupakan alasan mengapa tidak ada rilis pemeliharaan 3.0.z: tidak ada alasan bagus bagi siapa pun yang ingin tetap menggunakan 3.0 untuk meningkatkan ke 3.1).
Pada saat penulisan (September 2012), itu berarti kami saat ini sedikit lebih dari 3 tahun ke dalam proses transisi, dan prediksi itu tampaknya masih berada di jalurnya.
Sementara orang mengetik kode Python 3 paling sering digigit oleh perubahan sintaksis seperti print
menjadi fungsi, yang sebenarnya tidak merepotkan untuk porting perpustakaan karena 2to3
alat konversi otomatis menanganinya dengan cukup bahagia.
Masalah terbesar dalam praktik sebenarnya adalah masalah semantik: Python 3 tidak membiarkan Anda bermain dengan cepat dan longgar dengan penyandian teks seperti halnya Python 2. Ini adalah kedua manfaat terbesarnya dari Python 2, tetapi juga penghalang terbesar untuk porting: Anda harus memperbaiki masalah penanganan Unicode Anda agar port berfungsi dengan benar (sedangkan dalam 2.x, banyak kode yang secara diam-diam menghasilkan data yang salah dengan input non-ASCII, memberikan kesan bekerja, terutama di lingkungan di mana data non-ASCII tidak umum).
Bahkan perpustakaan standar di Python 3.0 dan 3.1 masih memiliki masalah penanganan Unicode, sehingga sulit untuk mem-port banyak perpustakaan (terutama yang terkait dengan layanan web).
3.2 mengatasi banyak masalah itu, memberikan target yang jauh lebih baik untuk perpustakaan dan kerangka kerja seperti Django. 3,2 juga membawa versi kerja pertama wsgiref
(standar utama yang digunakan untuk komunikasi antara server web dan aplikasi web yang ditulis dengan Python) untuk 3.x, yang merupakan prasyarat yang diperlukan untuk adopsi di ruang web.
Ketergantungan utama seperti NumPy dan SciPy sekarang telah porting, instalasi dan alat-alat manajemen ketergantungan seperti zc.buildout
, pip
dan virtualenv
tersedia untuk 3.x, rilis Pyramid 1.3 mendukung Python 3.2, rilis Django 1.5 mendatang termasuk dukungan Python 3 eksperimental, dan rilis 12.0 dari kerangka kerja Twisted menjatuhkan dukungan Python 2.5 untuk membuka jalan untuk membuat versi yang kompatibel dengan Python 3.
Selain kemajuan pada pustaka dan kerangka kerja kompatibilitas Python, implementasi interpreter PyPy yang dikompilasi JIT populer secara aktif bekerja pada dukungan Python 3.
Alat untuk mengelola proses migrasi juga meningkat pesat. Selain 2to3
alat yang disediakan sebagai bagian dari CPython (yang sekarang dianggap paling cocok untuk konversi satu kali aplikasi yang tidak perlu mempertahankan dukungan untuk seri 2.x), ada juga python-modernize
, yang menggunakan 2to3
infrastruktur untuk menargetkan subset umum (besar) dari Python 2 dan Python 3. Alat ini membuat basis kode tunggal yang akan berjalan pada Python 2.6+ dan Python 3.2+ dengan bantuan six
pustaka kompatibilitas. Rilis Python 3.3 juga menghilangkan salah satu penyebab utama "noise" ketika memigrasi aplikasi sadar Unicode yang ada: Python 3.3 sekali lagi mendukung awalan 'u' untuk string literal (sebenarnya tidak benar - benar melakukanapa pun di Python 3 - ini baru saja dipulihkan untuk menghindari migrasi secara tidak sengaja ke Python 3 yang lebih sulit bagi pengguna yang telah dengan benar membedakan teks dan literal biner mereka di Python 2).
Jadi kami sebenarnya cukup senang dengan perkembangannya - masih ada hampir 2 tahun lagi untuk kerangka waktu asli kami, dan perubahannya beriak dengan baik melalui seluruh ekosistem Python.
Karena banyak proyek tidak membuat metadata Indeks Paket Python mereka dengan benar, dan beberapa proyek dengan pengelola yang kurang aktif telah bercabang untuk menambahkan dukungan Python 3, scanner PyPI yang murni otomatis masih memberikan pandangan yang terlalu negatif tentang keadaan perpustakaan Python 3 dukung.
Alternatif yang lebih disukai untuk mendapatkan informasi tentang tingkat dukungan Python 3 pada PyPI adalah http://py3ksupport.appspot.com/
Daftar ini secara pribadi dikuratori oleh Brett Cannon (pengembang inti Python lama) untuk memperhitungkan metadata proyek yang salah, dukungan Python 3 yang ada di alat kontrol sumber tetapi belum dalam rilis resmi, dan proyek yang memiliki garpu lebih terkini atau alternatif yang mendukung Python 3. Dalam banyak kasus, perpustakaan yang belum tersedia di Python 3 hilang dependensi kunci dan / atau kurangnya dukungan Python 3 dalam proyek lain mengurangi permintaan pengguna (misalnya setelah kerangka inti Django tersedia di Python 3, alat terkait seperti South dan django-selery lebih mungkin untuk menambahkan dukungan Python 3, dan ketersediaan dukungan Python 3 di Pyramid dan Django membuatnya lebih mungkin bahwa dukungan Python 3 akan diimplementasikan dalam alat lain seperti gevent).
Situs di http://getpython3.com/ mencakup beberapa tautan luar biasa ke buku-buku dan sumber daya lain untuk Python 3, mengidentifikasi beberapa pustaka kunci dan kerangka kerja yang sudah mendukung Python 3, dan juga menyediakan beberapa informasi tentang bagaimana pengembang dapat mencari bantuan keuangan dari PSF dalam porting proyek-proyek utama ke Python 3.
Sumber lain yang bagus adalah halaman wiki komunitas tentang faktor-faktor yang perlu dipertimbangkan ketika memilih versi Python untuk proyek baru: http://wiki.python.org/moin/Python2orPython3