Python 2 EOL: Cara bertahan pada akhir Python 2

Pada 1 Januari 2020, cabang 2.x bahasa pengaturcaraan Python tidak lagi disokong oleh penciptanya, Python Software Foundation. Tarikh ini menandakan kemuncak sebuah drama yang telah berlangsung selama bertahun-tahun - peralihan dari versi Python yang lebih lama, kurang mampu, digunakan secara meluas ke versi yang lebih baru dan lebih kuat yang masih mengikuti pendahulunya dalam penggunaan.

Sudah tiba masanya. Python 3, dengan peningkatan teknikal dan pengguna akhir yang tidak terkira jumlahnya daripada Python 2, tidak pernah berada dalam kedudukan yang lebih baik untuk menggantikan Python 2. secara kekal. Sebilangan besar pakej popular yang dihoskan di repositori PyPI, kedai pertama untuk kod Python yang boleh digunakan semula, menyokong Python 3. Python 3 telah menjadi penterjemah Python lalai untuk banyak pengedaran Linux. Dan kebanyakan buku terbaru, akademi pengekodan, dan tutorial dalam talian mengesyorkan Python 3 untuk pemula.

Kini berita buruk. Python 2, seperti Windows 7 (atau Windows XP!), Akan bersama kami selama bertahun-tahun akan datang. Sebilangan besar daripada kita akan terus bergantung pada aplikasi yang ditulis dalam Python 2. Sebilangan daripada kita akan terus menggunakan Python 2 untuk aplikasi baru, kerana sekatan dalaman. Apa yang harus anda lakukan sekiranya anda terjebak dengan Python 2 dalam dunia Python 3 yang pantas? Mari lihat pilihannya. 

Python 2 akhir hayat: Apa maksudnya

Perkara pertama dan paling penting untuk difahami mengenai Python 2 going EOL (akhir hayat): Aplikasi Python 2 masih akan berjalan. Jangan anggap ini sebagai masalah Millennium Bug, di mana aplikasi Python 2 secara ajaib berhenti pada 1 Januari 2020. Tidak akan ada lagi sokongan rasmi  untuk Python 2 dari pasukan pembangunan utama Python.

Inilah maksud Python 2 EOL dari segi praktikal:

  • Pembetulan pepijat rasmi dan patch keselamatan untuk Python 2 akan berhenti.  Tidak ada masalah yang baru ditemui dalam penterjemah Python 2 atau pustaka standard Python 2 yang akan diperbaiki oleh pasukan pembangunan teras. Walau bagaimanapun, vendor komersil dapat mengekalkan Python 2 sendiri, dan pihak ketiga yang lain dapat membuat pangkalan data Python 2 dan meneruskan di mana pasukan inti berhenti. (Lebih lanjut mengenai ini kemudian.)
  • Projek Python pihak ketiga akan meninggalkan Python 2. Perpustakaan yang telah menyokong Python 2 dan Python 3 akan mula menumpukan sumber daya mereka untuk Python 3 secara eksklusif. Sebilangan besar projek ini dijalankan secara sukarela, dan lebih kurang berfungsi untuk menyokong hanya satu versi bahasa. Setiap projek akan memutuskan sokongan Python 2 untuk dirinya sendiri, tetapi banyak projek utama Python berjanji untuk menolak sokongan Python 2 sepenuhnya pada tahun 2020.
  • Sokongan platform untuk Python 2 akan semakin berkurang. Penyebaran Linux dan penyedia perkhidmatan awan mungkin terus merangkumi masa berjalan Python 2. Tetapi harapkan sokongan untuk Python 2 menjadi kurang kuat dari masa ke masa. Hampir pasti versi Python 2 dapat dikendalikan dalam platform cloud, tetapi tidak ada jaminan bahawa penyedia perkhidmatan cloud akan terus mengekalkan kontena Python 2 mereka sendiri.

Sekiranya anda terjebak dengan aplikasi Python 2, bagaimana anda harus menangani ketiadaan sokongan Python 2? Perkara terbaik yang perlu dilakukan dalam jangka panjang adalah mencari strategi untuk membuang semua kebergantungan anda pada Python 2. Tetapi itu adalah pilihan pertama dari banyak pilihan. 

Peralihan jauh dari Python 2

Meninggalkan Python 2 untuk Python 3 mungkin lebih mudah daripada yang anda jangkakan, bergantung pada ukuran asas kod dan pergantungan luaran. Dokumentasi rasmi Python mempunyai beberapa langkah mudah yang dapat anda ambil untuk menentukan apakah projek anda "bukti masa depan" —ie, dapat digunakan di Python 3 dengan sedikit atau tanpa penyesuaian. Salah satu langkah pertama terbaik yang boleh anda lakukan adalah menggunakan  caniusepython3paket untuk mengetahui mana, jika ada, komponen atau ketergantungan yang akan menyekat migrasi.

Sekiranya anda terjebak dengan Python 2 kerana komponen aplikasi tertentu hanya berfungsi pada Python 2, mulakan dengan beralih dari komponen tersebut. Lihat apakah ada alternatif yang sesuai dengan Python 3, dan kemudian bina semula aplikasi dari titik itu ke luar. Ideanya adalah mencari tempat terkecil di mana kebergantungan seseorang pada Python 2 terletak, dan mengatasinya.

The  -kurangnya anda boleh lakukan, jika anda mesti kekal di Python 2 dalam bentuk tertentu, yang bermula dengan berhijrah ke versi terbaru Python 2-Python 2.7.16 sebagai tulisan dan ini digunakan yang sebagai titik untuk memulakan Python 3 Dengan cara itu anda akan mendapat manfaat daripada perbaikan bug yang akan tersedia untuk Python 2.7 sebelum akhir hayat rasmi.

Gunakan runtime Python 2 alternatif

Sekiranya mengubah asas kod Python 2 bukanlah cadangan yang boleh dilaksanakan, alternatif lain adalah menggunakan runtime Python 2 yang berbeza, yang dikembangkan oleh pihak ketiga. Waktu operasi Python 2 alternatif mungkin mempunyai tetingkap sokongan yang lebih lama daripada Python 2 itu sendiri.

Tauthon

Tauthon adalah garpu Python 2.7.18 "dengan sintaks baru, built-in, dan perpustakaan yang disokong dari Python 3.x," menurut README projek. Tauthon juga termasuk, setiap kali penyelenggara dapat memberikannya, memperbaiki dan memperbaiki bahasa. Secara teori Tauthon harus berfungsi sebagai pengganti drop-in untuk Python 2.7. Keluaran terbaru dari penulisan ini, Tauthon 2.8.2, merangkumi anotasi fungsi, argumen kata kunci sahaja, async/awaitsintaks, dan ciri lain yang sebelumnya hanya terdapat di Python 3.

PyPy

PyPy, waktu operasi yang dipercepat untuk Python, menggunakan Python 2 sebagai bahagian penting dari infrastruktur dalamannya sendiri, dan telah lama menyokong Python 2 sebagai versi utamanya. Dokumentasi untuk projek ini mendakwa "kerana RPython [asas PyPy] dibina di atas Python 2 dan itu sangat tidak mungkin berubah, versi Python 2 PyPy akan berada di sekitar 'selama-lamanya,' iaitu selagi PyPy sendiri sekitar. " PyPy mungkin menimbulkan keserasian atau masalah prestasi dengan beberapa pakej Python yang bergantung pada sambungan C, walaupun pasukan pengembangan PyPy sentiasa berusaha untuk menyelesaikan masalah tersebut.

IronPython

IronPython, implementasi Python untuk runtime .Net, mempunyai versi Python 2 yang masih mendapat sokongan aktif. Daftar pemaju yang ada sekarang telah menyatakan bahawa mereka tidak mungkin menyokong Python 2 pada tahun 2020, lebih baik untuk menumpukan perhatian pada IronPython3. Namun, itu tidak bermaksud orang lain tidak dapat meneruskan sokongan itu sendiri.

Cython

Kemungkinan lain, walaupun dengan sokongan yang terhad juga, adalah Cython. Cython menyusun Python ke C dengan menaip pilihan untuk peningkatan prestasi dan telah menyokong Python 2 sejak awal. Ada kemungkinan menggunakan Cython untuk menukar kod Python 2 menjadi C untuk penggunaan berterusan sebagai binari "beku". Anda mungkin akan memperoleh peningkatan prestasi dengan melakukannya, bergantung pada sifat aplikasi. (Program yang terutama terikat I / O tidak akan melihat banyak peningkatan.)

Namun, Cython merancang untuk menurunkan sokongan Python 2 pada akhir tahun ini. Ini tidak bermaksud bahawa program Python 2 tidak akan dikompilasi ke Cython lagi, hanya kod Cython yang menggunakan sintaks Python 2 yang perlu disusun menggunakan Python 3

Beli sokongan Python 2 yang diperluas dari vendor

Salah satu penyelesaian jangka panjang adalah mendapatkan sokongan daripada vendor penyelesaian Python. ActiveState, pencipta pengedaran ActivePython dan Komodo IDE, menawarkan sokongan komersial untuk pelanggan yang ingin tinggal bersama Python 2, atau yang ingin berhijrah ke Python 3 dengan mengenal pasti bahagian-bahagian timbunan Python mereka yang mesti ditulis semula dalam Python 3.

Beberapa vendor memberikan sokongan untuk Python 2 sebagai sebahagian daripada kehadirannya dalam produk lain yang disokong. Red Hat Enterprise Linux versi 6 dan 7 merangkumi Python 2, jadi sebarang kontrak sokongan yang dibeli dari Red Hat untuk versi OS tersebut akan merangkumi sokongan berterusan untuk Python 2 melalui sokongan sepanjang hayat produk.

Sekiranya anda menggunakan Python 2 melalui perkhidmatan cloud, ada kemungkinan perkhidmatan tersebut akan terus menyokong Python 2 dengan caranya sendiri. AWS, misalnya, telah menyatakan bahawa ia akan memberikan tampalan keselamatan untuk waktu operasi Python 2.7 hingga 31 Disember 2020, walaupun ini tidak berlaku untuk pakej Python 2.7 pihak ketiga mana pun.

Pilihan ketiga ialah membeli sokongan daripada syarikat perunding atau kontraktor. Tahap sokongan yang mereka berikan bergantung kepada keperluan dan cita-cita anda. Ini mungkin terdiri daripada membuat rancangan peralihan untuk menjauh dari Python 2 dan mempunyai perisian bergantung yang ditulis semula (mungkin strategi jangka panjang terbaik), atau menggabungkan tambalan untuk Python 2 secara manual ke dalam binaan runtime yang disesuaikan (bercita-cita tinggi dan kompleks ).

Kekalkan Python 2 sendiri

Python adalah projek sumber terbuka. Tidak ada apa-apa yang menghalang anda daripada melaksanakan sebarang perbaikan yang diperlukan sendiri. Sekiranya penyelesaiannya adalah perubahan pada pustaka standard Python, itu biasanya tidak terlalu sukar, kerana kebanyakan pustaka standard Python sendiri ditulis dalam Python. Tetapi jika anda perlu membuat perubahan pada modul C yang digunakan oleh Python di perpustakaan standard, atau jurubahasa CPython, itu akan menjadi lebih mencabar. Anda mesti tahu C dan biasa dengan dalaman CPython untuk mencapainya.

Tidak buat apa-apa

Sekiranya tidak pecah, jangan perbaiki. Itulah strategi yang digunakan banyak perniagaan dengan Windows NT dan Windows 2000 ketika sistem operasi tersebut berakhir. Aplikasi Python yang hanya untuk kegunaan dalaman dan yang tidak terdedah kepada Internet awam secara teori boleh dijalankan selama-lamanya.

Mesin maya dan pengkontenan menyediakan cara untuk memastikan aplikasi seperti ini tetap hidup dan baik dalam persekitaran yang terkawal. Anda boleh "membekukan" edisi tertentu Python 2 runtime ke dalam gambar kontena atau VM, bersama dengan pustaka standardnya, modul yang diperlukan untuk aplikasi anda, dan aplikasi itu sendiri.

Walaupun begitu, setiap aplikasi lama, bahkan yang tidak mempunyai pendedahan luaran, harus dinilai semula secara berkala. Dalam setiap kes, strategi jangka panjang terbaik untuk pengguna Python 2 adalah berhijrah ke Python 3. Python 2, sehebat yang pernah ada, adalah sesuatu yang boleh dilalui.

Baca lebih lanjut mengenai Python

  • Apa itu Python? Pengaturcaraan yang hebat dan intuitif
  • Apa itu PyPy? Python lebih cepat tanpa rasa sakit
  • Apa itu Cython? Python pada kelajuan C
  • Tutorial Cython: Cara mempercepat Python
  • Cara memasang Python dengan cara yang bijak
  • Ciri baru terbaik di Python 3.8
  • Pengurusan projek Python yang lebih baik dengan Puisi
  • Virtualenv dan venv: Persekitaran maya Python dijelaskan
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan dan proses subtitle Python dijelaskan
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk profil kod Python
  • Cara menggunakan cProfile untuk profil kod Python
  • Mulakan dengan async di Python
  • Cara menggunakan asyncio di Python
  • Cara menukar Python ke JavaScript (dan kembali lagi)
  • Python 2 EOL: Cara bertahan pada akhir Python 2
  • 12 Pythons untuk setiap keperluan pengaturcaraan
  • 24 perpustakaan Python untuk setiap pembangun Python
  • 7 IDE Python manis yang mungkin anda terlepas
  • 3 kekurangan utama Python - dan penyelesaiannya
  • 13 Kerangka web Python dibandingkan
  • 4 Kerangka ujian Python untuk menghancurkan pepijat anda
  • 6 ciri Python baru yang hebat yang anda tidak mahu ketinggalan
  • 5 Pembahagian Python untuk menguasai pembelajaran mesin
  • 8 perpustakaan Python yang hebat untuk pemprosesan bahasa semula jadi