Python 2 EOL: Cara bertahan dari akhir Python 2

Mulai 1 Januari 2020, cabang 2.x dari bahasa pemrograman Python tidak lagi didukung oleh pembuatnya, Python Software Foundation. Tanggal ini menandai puncak dari sebuah drama yang telah berlangsung selama bertahun-tahun — transisi dari versi Python yang lebih lama, kurang mampu, dan banyak digunakan ke versi yang lebih baru dan lebih kuat yang masih mengikuti pendahulunya dalam adopsi.

Sudah saatnya. Python 3, dengan peningkatan teknis dan pengguna akhir yang tak terhitung jumlahnya atas Python 2, tidak pernah berada dalam posisi yang lebih baik untuk menggantikan Python 2. Sebagian besar paket populer yang dihosting di repositori PyPI, toko pertama untuk kode Python yang dapat digunakan kembali, mendukung Python 3. Python 3 telah menjadi penerjemah Python default untuk banyak distribusi Linux. Dan hampir setiap buku terbaru, akademi coding, dan tutorial online merekomendasikan Python 3 untuk pemula.

Sekarang kabar buruknya. Python 2, seperti Windows 7 (atau Windows XP!), Akan bersama kami selama bertahun-tahun yang akan datang. Banyak dari kita akan terus bergantung pada aplikasi yang ditulis dengan Python 2. Beberapa dari kita bahkan akan terus menggunakan Python 2 untuk aplikasi baru, karena batasan internal. Apa yang harus Anda lakukan jika Anda terjebak dengan Python 2 dalam apa yang dengan cepat menjadi dunia Python 3? Mari kita lihat opsinya. 

Python 2 end of life: Apa artinya

Hal pertama dan terpenting untuk dipahami tentang Python 2 yang menjadi EOL (akhir masa pakai): Aplikasi Python 2 akan tetap berjalan. Jangan menganggap ini sebagai masalah Bug Milenium, di mana aplikasi Python 2 secara ajaib terhenti pada tanggal 1 Januari 2020. Tidak akan ada lagi dukungan resmi  untuk Python 2 dari tim inti pengembangan Python.

Inilah arti Python 2 EOL secara praktis:

  • Perbaikan bug resmi dan patch keamanan untuk Python 2 akan dihentikan.  Tidak ada masalah yang baru ditemukan dalam interpreter Python 2 atau pustaka standar Python 2 yang akan diperbaiki oleh tim pengembangan inti. Namun, vendor komersial dapat mempertahankan Python 2 sendiri, dan pihak ketiga lainnya dapat membagi basis kode Python 2 dan melanjutkan di mana tim inti berhenti. (Lebih lanjut tentang ini nanti.)
  • Proyek Python pihak ketiga akan meninggalkan Python 2. Pustaka yang telah mendukung Python 2 dan Python 3 akan mulai mencurahkan sumber dayanya untuk Python 3 secara eksklusif. Banyak dari proyek ini dijalankan secara sukarela, dan jauh lebih sedikit pekerjaan untuk mendukung hanya satu versi bahasa. Setiap proyek akan memutuskan dukungan Python 2 untuk dirinya sendiri, tetapi banyak proyek Python besar berjanji untuk menghentikan dukungan Python 2 sepenuhnya pada tahun 2020.
  • Dukungan platform untuk Python 2 akan berkurang. Distribusi Linux dan penyedia layanan cloud dapat terus menyertakan runtime Python 2. Tetapi mengharapkan dukungan untuk Python 2 menjadi kurang kuat dari waktu ke waktu. Hampir pasti masih mungkin untuk menjalankan versi containerized dari Python 2 pada platform cloud, tetapi tidak ada jaminan bahwa penyedia layanan cloud akan terus mempertahankan container Python 2 mereka sendiri.

Jika Anda terjebak dengan aplikasi Python 2, bagaimana Anda harus menangani tidak adanya dukungan Python 2? Hal terbaik untuk dilakukan dalam jangka panjang adalah menemukan strategi untuk menghapus semua dependensi Anda pada Python 2. Tetapi itu hanyalah yang pertama dari banyak opsi. 

Transisi dari Python 2

Meninggalkan Python 2 untuk Python 3 mungkin lebih mudah dari yang Anda harapkan, tergantung pada ukuran basis kode dan dependensi eksternal. Dokumentasi resmi Python memiliki beberapa langkah langsung yang dapat Anda ambil untuk menentukan apakah proyek Anda "tahan masa depan" —yaitu, dapat digunakan dalam Python 3 dengan sedikit atau tanpa penyesuaian. Salah satu langkah pertama terbaik yang dapat Anda lakukan adalah menggunakan  caniusepython3paket untuk mencari tahu, jika ada, komponen atau dependensi yang akan memblokir migrasi.

Jika Anda terjebak dengan Python 2 karena komponen aplikasi tertentu hanya berfungsi pada Python 2, mulailah dengan beralih dari komponen itu. Lihat apakah ada alternatif yang kompatibel dengan Python 3, lalu buat ulang aplikasi dari titik itu ke luar. Idenya adalah untuk mencari tempat terkecil di mana ketergantungan seseorang pada Python 2 berada, dan mengatasinya.

Paling  tidak yang dapat Anda lakukan, jika Anda harus tetap menggunakan Python 2 dalam beberapa bentuk, adalah mulai dengan bermigrasi ke versi terbaru Python 2 — Python 2.7.16 saat tulisan ini dibuat — dan menggunakannya sebagai titik tolak untuk Python 3 Dengan begitu, Anda akan mendapatkan keuntungan dari perbaikan bug yang akan tersedia untuk Python 2.7 sebelum masa pakainya berakhir.

Gunakan runtime Python 2 alternatif

Jika mengubah basis kode Python 2 bukanlah proposisi yang bisa diterapkan, alternatif lain adalah menggunakan runtime Python 2 yang berbeda, yang dikembangkan oleh pihak ketiga. Waktu proses Python 2 alternatif mungkin memiliki jendela dukungan yang lebih lama daripada Python 2 itu sendiri.

Tauthon

Tauthon adalah cabang dari Python 2.7.18 "dengan sintaks baru, bawaan, dan pustaka yang di-backport dari Python 3.x," menurut README proyek. Tauthon juga menyertakan, kapan pun pengelola dapat menyediakannya, perbaikan dan tambalan untuk bahasa tersebut. Secara teori, Tauthon seharusnya berfungsi sebagai pengganti drop-in untuk Python 2.7. Rilis terbaru saat tulisan ini dibuat, Tauthon 2.8.2, menyertakan penjelasan fungsi, argumen hanya kata kunci, async/awaitsintaks, dan fitur lain yang sebelumnya hanya tersedia di Python 3.

PyPy

PyPy, runtime akselerasi just-in-time untuk Python, menggunakan Python 2 sebagai bagian penting dari infrastruktur internalnya sendiri, dan telah lama mendukung Python 2 sebagai versi utamanya. Dokumentasi untuk proyek mengklaim “karena RPython [dasar dari PyPy] dibangun di atas Python 2 dan itu sangat tidak mungkin untuk berubah, versi Python 2 dari PyPy akan ada 'selamanya,' yaitu selama PyPy itu sendiri sekitar." PyPy mungkin menimbulkan masalah kompatibilitas atau kinerja dengan beberapa paket Python yang mengandalkan ekstensi C, meskipun tim pengembangan PyPy terus bekerja untuk mengatasi masalah tersebut.

IronPython

IronPython, implementasi Python untuk runtime .Net, memiliki versi Python 2 yang masih menerima dukungan aktif. Daftar pengembangnya saat ini telah menyatakan bahwa mereka tidak mungkin mendukung Python 2 setelah tahun 2020, lebih baik untuk berkonsentrasi pada IronPython3. Namun, itu tidak berarti orang lain tidak dapat melanjutkan dukungan tersebut sendirian.

Cython

Kemungkinan lain, meskipun dengan dukungan jendela terbatas, adalah Cython. Cython mengkompilasi Python ke C dengan pengetikan opsional untuk peningkatan kinerja dan telah mendukung Python 2 sejak awal. Anda dapat menggunakan Cython untuk mengubah kode Python 2 menjadi C untuk digunakan secara berkelanjutan sebagai biner "beku". Anda bahkan dapat meningkatkan kinerja dengan melakukannya, tergantung pada sifat aplikasi. (Program yang sebagian besar terikat I / O tidak akan melihat banyak peningkatan.)

Namun, Cython berencana untuk menghentikan dukungan Python 2 pada akhir tahun ini. Ini tidak berarti bahwa program Python 2 tidak akan dikompilasi ke Cython lagi, hanya kode Cython yang menggunakan sintaks Python 2 yang perlu dikompilasi menggunakan Python 3

Beli dukungan Python 2 yang diperluas dari vendor

Salah satu solusi jangka panjang adalah mendapatkan dukungan dari vendor solusi Python. ActiveState, pembuat distribusi ActivePython dan Komodo IDE, menawarkan dukungan komersial untuk pelanggan yang ingin tetap menggunakan Python 2, atau yang ingin bermigrasi ke Python 3 dengan mengidentifikasi bagian tumpukan Python mereka yang harus ditulis ulang dengan Python 3.

Beberapa vendor memberikan dukungan untuk Python 2 sebagai bagian dari kehadirannya di produk lain yang didukung. Red Hat Enterprise Linux versi 6 dan 7 menyertakan Python 2, jadi kontrak dukungan apa pun yang dibeli dari Red Hat untuk versi OS tersebut akan menyertakan dukungan berkelanjutan untuk Python 2 selama masa dukungan produk.

Jika Anda menggunakan Python 2 melalui layanan cloud, ada kemungkinan layanan tersebut akan terus mendukung Python 2 dengan caranya sendiri. AWS, misalnya, telah menyatakan akan memberikan patch keamanan untuk runtime Python 2.7-nya hingga 31 Desember 2020, meskipun ini tidak berlaku untuk paket Python 2.7 pihak ketiga mana pun.

Pilihan ketiga adalah membeli dukungan dari perusahaan konsultan atau kontraktor. Tingkat dukungan yang mereka berikan kepada Anda akan bervariasi tergantung pada kebutuhan dan ambisi Anda. Ini bisa terdiri dari datang dengan rencana transisi untuk menjauh dari Python 2 dan memiliki perangkat lunak yang bergantung ditulis ulang (mungkin strategi jangka panjang terbaik), atau secara manual menggabungkan tambalan untuk Python 2 ke dalam build runtime khusus (ambisius dan kompleks ).

Pertahankan Python 2 sendiri

Python adalah proyek open source. Tidak ada yang menghentikan Anda untuk menerapkan perbaikan yang diperlukan sendiri. Jika perbaikannya adalah perubahan pada pustaka standar Python, itu biasanya tidak terlalu sulit, karena sebagian besar pustaka standar Python itu sendiri ditulis dengan Python. Tetapi jika Anda perlu membuat perubahan pada modul C yang digunakan oleh Python di pustaka standar, atau juru bahasa CPython, itu akan lebih menantang. Anda harus tahu C dan terbiasa dengan internal CPython untuk mencapai ini.

Tidak melakukan apapun

Jika tidak rusak, jangan perbaiki. Itulah strategi yang digunakan banyak bisnis dengan Windows NT dan Windows 2000 ketika sistem operasi tersebut mati. Aplikasi Python yang hanya untuk penggunaan internal dan yang tidak diekspos ke Internet publik secara teori dapat berjalan tanpa batas.

Mesin virtual dan containerization menyediakan cara untuk menjaga jenis aplikasi ini tetap hidup dan sehat dalam lingkungan yang terkontrol. Anda dapat "membekukan" edisi tertentu dari waktu proses Python 2 ke dalam gambar kontainer atau VM, bersama dengan pustaka standarnya, modul yang diperlukan untuk aplikasi Anda, dan aplikasi itu sendiri.

Meskipun demikian, aplikasi lama apa pun, bahkan yang tidak memiliki eksposur eksternal, harus dinilai ulang secara teratur. Dalam setiap kasus, strategi jangka panjang terbaik untuk pengguna Python 2 adalah bermigrasi ke Python 3. Python 2, sebaik sebelumnya, adalah sesuatu yang harus dilewati.

Baca lebih lanjut tentang Python

  • Apa itu Python? Pemrograman yang kuat dan intuitif
  • Apa itu PyPy? Python lebih cepat tanpa rasa sakit
  • Apa itu Cython? Python dengan kecepatan C
  • Tutorial Cython: Cara mempercepat Python
  • Cara menginstal Python dengan cara cerdas
  • Fitur baru terbaik di Python 3.8
  • Manajemen proyek Python yang lebih baik dengan Poetry
  • Virtualenv dan venv: Penjelasan lingkungan virtual Python
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan threading dan subproses Python
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk membuat profil kode Python
  • Cara menggunakan cProfile untuk membuat profil kode Python
  • Mulailah dengan async dengan Python
  • Cara menggunakan asyncio dengan Python
  • Cara mengonversi Python ke JavaScript (dan kembali lagi)
  • Python 2 EOL: Cara bertahan dari akhir Python 2
  • 12 Pythons untuk setiap kebutuhan pemrograman
  • 24 perpustakaan Python untuk setiap pengembang Python
  • 7 IDE Python manis yang mungkin Anda lewatkan
  • 3 kekurangan utama Python — dan solusinya
  • 13 kerangka web Python dibandingkan
  • 4 kerangka uji Python untuk menghancurkan bug Anda
  • 6 fitur Python baru yang hebat yang tidak ingin Anda lewatkan
  • 5 distribusi Python untuk menguasai pembelajaran mesin
  • 8 perpustakaan Python yang bagus untuk pemrosesan bahasa alami