12 Pythons untuk setiap keperluan pengaturcaraan

Apabila anda memilih Python untuk pengembangan perisian, anda memilih ekosistem bahasa besar dengan banyak pakej yang merangkumi semua jenis keperluan pengaturcaraan. Tetapi selain perpustakaan untuk semua perkara, mulai dari pengembangan GUI hingga pembelajaran mesin, anda juga dapat memilih dari sebilangan waktu runtuh Python — dan beberapa waktu berjalan ini mungkin lebih sesuai dengan kes penggunaan yang anda miliki daripada yang lain.

Berikut adalah lawatan ringkas pengedaran Python, dari pelaksanaan standard (CPython) hingga versi yang dioptimumkan untuk kelajuan (PyPy), untuk kes penggunaan khas (Anaconda, ActivePython), untuk waktu jalan bahasa yang berbeza (Jython, IronPython), dan bahkan untuk memotong- ujikaji tepi (PyCopy, MesaPy).

CPython

CPython adalah pelaksanaan rujukan Python, versi standard yang dilihat oleh semua penjelmaan Python yang lain. CPython ditulis dalam C, seperti yang tersirat dengan namanya, dan ia dihasilkan oleh kumpulan inti orang yang sama yang bertanggungjawab untuk semua keputusan tingkat atas mengenai bahasa Python.

Kes penggunaan CPython

Kerana CPython adalah pelaksanaan rujukan Python, ia adalah yang paling konservatif dari segi pengoptimumannya. Ini berdasarkan reka bentuk. Penyelenggara Python mahukan CPython menjadi pelaksanaan Python yang paling serasi dan standard yang tersedia.

CPython adalah pilihan terbaik anda apabila keserasian dan kesesuaian dengan piawaian Python lebih penting daripada prestasi mentah dan masalah lain. CPython juga berguna untuk pakar yang ingin bekerjasama dengan Python dalam penjelmaannya yang paling mendasar, dan yang bersedia melupakan kemudahan tertentu. 

Contohnya, dengan CPython, anda perlu melakukan sedikit peningkatan untuk menyediakan persekitaran maya. Distro lain (khususnya Anaconda) memberikan lebih banyak automasi di sekitar penyediaan ruang kerja.

Batasan CPython

CPython tidak mempunyai pengoptimuman prestasi yang terdapat dalam edisi Python yang lain. Tidak ada penyusun JIT asli (tepat pada waktunya), tidak ada perpustakaan matematik dipercepat, dan tidak ada penambahan pihak ketiga demi prestasi. Itu semua perkara yang boleh anda tambahkan sendiri, tetapi tidak digabungkan. Sekali lagi, semua ini dibuat berdasarkan reka bentuk, untuk memastikan keserasian maksimum dan membolehkan CPython berfungsi sebagai pelaksanaan rujukan, tetapi ini bermaksud pengoptimuman prestasi bergantung kepada pengembang.

Selanjutnya, CPython hanya menyediakan satu set alat asas untuk bekerja dengan Python. Pengurus pakej pip, misalnya, memperoleh dan memasang pakej dari repositori pakej PyPI asli Python. Pip bahkan akan memasang binari yang dikompilasi (melalui format pengedaran roda) jika disediakan oleh pemaju, tetapi tidak akan memasang kebergantungan yang mungkin ada di dalam pakej di luar PyPI. 

Video berkaitan: Bagaimana Python menjadikan pengaturcaraan lebih mudah

Sempurna untuk IT, Python mempermudah pelbagai jenis pekerjaan, dari automasi sistem hingga bekerja di bidang canggih seperti pembelajaran mesin.

Anaconda Python

Anaconda, yang dihasilkan oleh Anaconda, Inc. (sebelumnya Continuum Analytics), dirancang untuk pemaju Python yang memerlukan pengedaran yang disokong oleh pembekal komersial dan dengan rancangan sokongan untuk perusahaan. Kes penggunaan utama untuk Anaconda Python adalah matematik, statistik, kejuruteraan, analisis data, pembelajaran mesin, dan aplikasi yang berkaitan.

Kes penggunaan Anaconda Python

Anaconda menggabungkan banyak perpustakaan yang paling biasa digunakan dalam karya Python komersial dan saintifik — SciPy, NumPy, Numba, dan sebagainya — dan menjadikan banyak lagi di antaranya dapat diakses melalui sistem pengurusan pakej tersuai.

Anaconda menonjol dari sebaran lain dalam bagaimana ia menggabungkan semua kepingan ini. Apabila dipasang, Anaconda menyediakan aplikasi desktop - Anaconda Navigator - yang menjadikan setiap aspek lingkungan Anaconda tersedia melalui GUI yang mudah digunakan. Mencari komponen, memastikannya sentiasa dikemas kini, dan bekerja dengannya adalah lebih mudah daripada Anaconda berbanding dengan CPython.

Keuntungan lain adalah cara Anaconda menangani komponen dari luar ekosistem Python jika mereka memerlukan paket tertentu. The condapengurus pakej, dicipta khusus untuk Anaconda, mengendalikan memasang kedua-dua pakej Python dan pihak ketiga, keperluan perisian luar.

Batasan Anaconda Python

Kerana Anaconda merangkumi begitu banyak perpustakaan yang berguna, dan dapat memasang lebih banyak lagi dengan hanya beberapa penekanan kekunci, ukuran pemasangan Anaconda boleh jauh lebih besar daripada CPython. Pemasangan CPython asas berjalan sekitar 100MB; Pemasangan Anaconda dapat berkembang menjadi gigabait dalam ukuran. Ini boleh menjadi masalah dalam situasi di mana anda mempunyai kekangan sumber.

Salah satu cara untuk mengurangkan jejak Anaconda adalah dengan memasang Miniconda, versi Anaconda yang dilucutkan yang hanya merangkumi minimum potongan yang diperlukan untuk bangun dan berjalan. Anda kemudian boleh menambahkan pakej ke Miniconda yang anda rasa sesuai, dengan melihat berapa banyak ruang yang digunakan setiap bahagian.

AktifPython

Seperti Anaconda, ActivePython dibuat dan dikendalikan oleh sebuah syarikat untung — dalam hal ini, ActiveState, yang memasarkan sejumlah masa jalan bahasa bersama dengan Komodo IDE berbilang bahasa.

Kes penggunaan ActivePython

ActivePython ditujukan untuk pengguna perusahaan dan saintis data — orang yang ingin menggunakan Python, tetapi tidak mahu menghabiskan banyak usaha untuk mengumpulkan dan mengurus pemasangan Python. ActivePython menggunakan pippengurus pakej biasa Python , tetapi juga membekalkan beberapa ratus perpustakaan biasa sebagai pekeliling yang disahkan, bersama dengan beberapa perpustakaan umum dengan pergantungan pihak ketiga seperti Perpustakaan Intel Math Kernel.

Batasan ActivePython

Terdapat satu kelemahan yang berpotensi untuk pendekatan ActivePython untuk menangani pakej dengan pergantungan luaran. Sekiranya anda ingin menaik taraf ke versi projek yang lebih baru dengan pergantungan yang kompleks (contohnya, TensorFlow), anda juga perlu meningkatkan pemasangan ActivePython anda. Dalam persekitaran di mana pembangunan cenderung terkait dengan versi tertentu dari proyek, ini tidak menjadi masalah. Tetapi dalam lingkungan di mana pengembangan cenderung melacak versi canggih, ia dapat menimbulkan masalah.

PyPy

Sebagai pengganti drop-in untuk jurubahasa CPython, PyPy menggunakan kompilasi tepat pada masanya (JIT) untuk mempercepat pelaksanaan program Python. Bergantung pada tugas yang sedang dilakukan, kenaikan prestasi dapat menjadi sangat dramatik. 

Kes penggunaan PyPy

Keluhan umum mengenai Python umumnya, dan CPython khususnya, adalah kepantasan. Secara lalai Python berjalan lebih perlahan daripada C, kadang-kadang beratus kali lebih perlahan. PyPy JIT mengkompilasi kod Python ke bahasa mesin, memberikan kelajuan 7.7x berbanding CPython secara purata. Beberapa tugas berjalan 50x lebih pantas. 

Bahagian yang terbaik adalah usaha kecil atau tidak diperlukan oleh pihak pemaju untuk mendapatkan keuntungan ini. Tukar CPython untuk PyPy, dan selalunya anda sudah selesai.

Batasan PyPy

PyPy sentiasa menunjukkan prestasi terbaik dengan aplikasi Python yang "tulen". Pakej Python yang berinteraksi dengan perpustakaan C, seperti NumPy, tidak berjaya juga kerana cara PyPy meniru antara muka binari asli CPython. Walau bagaimanapun, seiring waktu, pembangun PyPy telah mengatasi masalah ini, dan menjadikan PyPy jauh lebih serasi dengan kebanyakan pakej Python yang bergantung pada sambungan C. Ringkasnya, sokongan untuk sambungan C masih terhad, tetapi jauh lebih rendah daripada dulu.

Kelemahan lain yang mungkin berlaku dengan PyPy adalah ukuran masa proses. Masa operasi CPython teras pada Windows, tidak termasuk pustaka standard, adalah sekitar 4MB, sementara waktu operasi PyPy sekitar 32MB. Perhatikan juga bahawa PyPy telah lama menekankan cabang 2.x Python, jadi, sebagai contoh, PyPy untuk Python 3.x kini hanya tersedia untuk Windows dalam versi ujian beta 32-bit. (PyPy tersedia dalam versi 64-bit untuk Python 2.x dan 3.x untuk Linux dan MacOS.)

Jython

JVM (Java Virtual Machine) berfungsi sebagai jangka masa untuk banyak bahasa selain Java. Senarai panjang merangkumi Groovy, Scala, Clojure, Kotlin, dan, ya, Python, melalui projek Jython.

Kes penggunaan Jython

Jython menyusun kod Python 2.x ke bytecode JVM dan menjalankan program yang dihasilkan pada JVM. Dalam beberapa kes, program yang disusun Jython akan berjalan lebih cepat daripada rakan CPythonnya, tetapi tidak selalu.

Kelebihan terbesar yang diberikan Jython ialah interoperabiliti langsung dengan ekosistem Jawa yang lain. Java digunakan lebih luas daripada Python. Menjalankan Python di JVM membolehkan pembangun Python memanfaatkan ekosistem perpustakaan dan kerangka kerja yang sangat besar yang tidak dapat mereka gunakan. Dengan cara yang sama, Jython membenarkan pembangun Java menggunakan perpustakaan Python. 

Batasan Jython

Kelemahan terbesar bagi Jython ialah ia hanya menyokong cabang 2.x Python. Sokongan untuk Python 3.x sedang dalam pembangunan tetapi telah lama berlaku. Setakat ini tidak ada yang dikeluarkan.

Perhatikan juga bahawa sementara Jython membawa Python ke JVM, ia tidak membawa Python ke Android. Oleh kerana saat ini tidak ada port Jython ke Android yang tepat, Jython tidak dapat digunakan untuk mengembangkan aplikasi Android.

IronPython

Sama seperti Jython adalah pelaksanaan Python pada JVM, IronPython adalah pelaksanaan Python pada waktu run .Net, atau CLR (Common Language Runtime). IronPython menggunakan DLR (Dynamic Language Runtime) CLR untuk membolehkan program Python berjalan dengan tahap dinamisme yang sama seperti yang mereka lakukan di CPython.

Kes penggunaan IronPython

Seperti Jython, IronPython adalah jambatan. Kes penggunaan yang besar adalah operasi antara Python dan alam semesta .Net. Perhimpunan .Net yang ada boleh dimuat dalam program IronPython menggunakan sintaks import dan manipulasi objek asli Python. Anda juga boleh menyusun kod IronPython ke dalam pemasangan dan menjalankannya sebagaimana adanya atau memanggilnya dari bahasa lain. Walau bagaimanapun, perhatikan bahawa MSIL (Bahasa Menengah Microsoft) dalam pemasangan tidak dapat diakses secara langsung dari bahasa .Net lain, kerana tidak mematuhi Spesifikasi Bahasa Umum.

Batasan IronPython

Seperti Jython, IronPython pada masa ini hanya menyokong Python 2.x. Walau bagaimanapun, kerja sedang dijalankan untuk membuat pelaksanaan IronPython 3.x.

WinPython

Seperti namanya, WinPython adalah sebaran Python yang dibuat khusus untuk pengguna Microsoft Windows. Edisi CPython sebelumnya untuk Windows tidak dirancang dengan baik, dan sukar bagi pengguna Windows untuk memanfaatkan sepenuhnya ekosistem Python. Edisi Windows CPython bertambah baik dari masa ke masa, tetapi WinPython masih menawarkan banyak perkara yang tidak terdapat di CPython.

Kes penggunaan WinPython

Tarikan utama WinPython ialah edisi serba lengkap Python. Ia tidak perlu dipasang pada mesin di mana ia beroperasi; hanya perlu dibongkar ke dalam direktori. Ini menjadikan WinPython berguna dalam kes di mana perisian tidak dapat dipasang pada sistem tertentu, dalam senario di mana masa operasi Python yang telah dikonfigurasi perlu diedarkan bersama dengan aplikasi untuk berjalan di atasnya, atau di mana beberapa edisi Python perlu berjalan berdampingan tanpa campur tangan antara satu sama lain.

WinPython juga mengumpulkan banyak pakej berorientasikan sains data - NumPy, Pandas, SciPy, Matplotlib, dan lain-lain - sehingga dapat digunakan dengan segera, tanpa langkah pemasangan tambahan. Disertakan juga penyusun C / C ++, kerana banyak mesin Windows tidak menyertakannya, dan banyak sambungan Python memerlukan atau dapat menggunakannya.

Batasan WinPython

Satu batasan WinPython ialah ia mungkin memasukkan terlalu banyak secara lalai untuk beberapa kes penggunaan. Untuk mengatasinya, pencipta WinPython menyediakan versi "sifar" dari setiap edisi WinPython, yang hanya mengandungi pemasangan produk yang paling minimum. Lebih banyak pakej boleh ditambah kemudian, sama ada dengan pipalat Python sendiri atau utiliti WPM WinPython.

Python Portable

Python Portable adalah waktu operasi CPython dalam pakej serba lengkap. Ia datang dari koleksi PortableDevApps aplikasi serba lengkap yang serupa.

Kes penggunaan Python Portable

Seperti WinPython, Python Portable merangkumi sebilangan besar pakej untuk pengkomputeran saintifik — Matplotlib, Numba, SymPy, SciPy, Cython, dan lain-lain. Juga seperti WinPython, Python Portable berjalan tanpa perlu dipasang secara rasmi pada hos Windows; ia boleh hidup di mana-mana direktori atau pada pemacu yang boleh dilepas. Turut disertakan adalah pengurus pakej Spyder IDE dan Python, sehingga anda dapat menambah, mengubah, atau membuang pakej yang diperlukan.

Batasan Python Portable

Tidak seperti WinPython, Python Portable tidak termasuk penyusun C / C ++. Anda perlu menyediakan penyusun C untuk menggunakan kod yang ditulis dengan Cython (dan dengan itu dikompilasi ke C).

Taburan Python eksperimental

Pengedaran ini membuat perubahan ketara pada Python — baik kerana mereka menggunakan Python sebagai titik permulaan untuk sesuatu yang baru, atau kerana mereka membuat perubahan strategik pada Python standard. Pada amnya, Pythons ini belum digalakkan untuk penggunaan pengeluaran. 

Sekiranya anda tinggal dengan pangkalan data Python 2.x untuk masa yang akan datang, anda mungkin ingin melihat artikel kami mengenai pengedaran Python eksperimental yang menjadikan Python 2.x masih hidup.

MicroPython

MicroPython menyediakan subset minimum bahasa Python yang dapat dijalankan pada perkakasan kelas bawah seperti mikrokontroler. MicroPython menerapkan Python 3.4 dengan beberapa perbezaan. Sangat mudah untuk menulis kod MicroPython jika anda mengenali Python, tetapi kod yang ada mungkin tidak berjalan sebagaimana mestinya.

Pycopy