Προγραμματισμός

12 Pythons για κάθε ανάγκη προγραμματισμού

Όταν επιλέγετε το Python για ανάπτυξη λογισμικού, επιλέγετε ένα μεγάλο γλωσσικό οικοσύστημα με πληθώρα πακέτων που καλύπτουν κάθε είδους ανάγκες προγραμματισμού. Ωστόσο, εκτός από τις βιβλιοθήκες για τα πάντα, από την ανάπτυξη GUI έως τη μηχανική εκμάθηση, μπορείτε επίσης να επιλέξετε από έναν αριθμό χρόνου εκτέλεσης Python - και ορισμένοι από αυτούς τους χρόνους εκτέλεσης μπορεί να ταιριάζουν καλύτερα στην περίπτωση χρήσης που έχετε στη διάθεσή σας από άλλες.

Ακολουθεί μια σύντομη περιήγηση στις διανομές Python, από την τυπική υλοποίηση (CPython) σε εκδόσεις βελτιστοποιημένες για ταχύτητα (PyPy), για ειδικές περιπτώσεις χρήσης (Anaconda, ActivePython), για διαφορετικές ώρες εκτέλεσης γλώσσας (Jython, IronPython), ακόμη και για κοπή πειραματισμός αιχμής (PyCopy, MesaPy).

CPython

Το CPython είναι η εφαρμογή αναφοράς του Python, η τυπική έκδοση στην οποία κοιτάζουν όλες οι άλλες ενσαρκώσεις της Python. Το CPython είναι γραμμένο σε C, όπως υπονοείται από το όνομα, και παράγεται από την ίδια βασική ομάδα ανθρώπων που είναι υπεύθυνοι για όλες τις αποφάσεις ανώτατου επιπέδου σχετικά με τη γλώσσα Python.

Θήκες χρήσης CPython

Επειδή το CPython είναι η εφαρμογή αναφοράς του Python, είναι το πιο συντηρητικό όσον αφορά τις βελτιστοποιήσεις του. Αυτό είναι από το σχεδιασμό. Οι συντηρητές της Python θέλουν το CPython να είναι η ευρύτερα συμβατή και τυποποιημένη εφαρμογή του Python.

Το CPython είναι η καλύτερη επιλογή σας όταν η συμβατότητα και η συμμόρφωση με τα πρότυπα της Python έχουν μεγαλύτερη σημασία από την απλή απόδοση και άλλες ανησυχίες. Το CPython είναι επίσης χρήσιμο για τον ειδικό που θέλει να συνεργαστεί με την Python στην πιο θεμελιώδη ενσάρκωσή του και που είναι πρόθυμος να παραιτηθεί από ορισμένες ανέσεις.

Για παράδειγμα, με το CPython, πρέπει να κάνετε λίγο περισσότερα ανύψωση για να ρυθμίσετε εικονικά περιβάλλοντα. Άλλες διανομές (ειδικότερα η Anaconda) παρέχουν περισσότερους αυτοματισμούς γύρω από τη ρύθμιση του χώρου εργασίας.

Περιορισμοί CPython

Το CPython δεν διαθέτει βελτιστοποιήσεις απόδοσης σε άλλες εκδόσεις του Python. Δεν υπάρχει εγγενής μεταγλωττιστής JIT (just-in-time), χωρίς επιταχυνόμενες βιβλιοθήκες μαθηματικών και καμία προσθήκη τρίτου μέρους για χάρη της απόδοσης. Αυτά είναι όλα τα πράγματα που μπορείτε να προσθέσετε μόνοι σας, αλλά δεν είναι ομαδοποιημένα. Και πάλι, όλα αυτά είναι σχεδιαστικά, για να διασφαλιστεί η μέγιστη συμβατότητα και να επιτρέπεται στο CPython να λειτουργεί ως εφαρμογή αναφοράς, αλλά αυτό σημαίνει ότι τυχόν βελτιστοποιήσεις απόδοσης εξαρτώνται από τον προγραμματιστή.

Επιπλέον, το CPython παρέχει μόνο ένα βασικό σύνολο εργαλείων για τη συνεργασία με την Python. Ο διαχειριστής πακέτων pip, για παράδειγμα, λαμβάνει και εγκαθιστά πακέτα από το φυσικό πακέτο PyPI της Python. Η Pip θα εγκαταστήσει ακόμη και τα μεταγλωττισμένα δυαδικά αρχεία (μέσω της μορφής διανομής τροχών) εάν παρέχονται από τον προγραμματιστή, αλλά δεν θα εγκαταστήσει εξαρτήσεις που ενδέχεται να έχουν τα πακέτα εξω απο του PyPI.

Σχετικό βίντεο: Πώς ο Python διευκολύνει τον προγραμματισμό

Ιδανικό για IT, η Python απλοποιεί πολλά είδη εργασίας, από τον αυτοματισμό του συστήματος έως την εργασία σε πρωτοποριακούς τομείς όπως η μηχανική μάθηση.

Anaconda Python

Το Anaconda, που παράγεται από την Anaconda, Inc. (πρώην Continuum Analytics), έχει σχεδιαστεί για προγραμματιστές της Python που χρειάζονται μια διανομή που υποστηρίζεται από έναν εμπορικό πάροχο και με σχέδια υποστήριξης για επιχειρήσεις. Οι κύριες περιπτώσεις χρήσης του Anaconda Python είναι τα μαθηματικά, οι στατιστικές, η μηχανική, η ανάλυση δεδομένων, η μηχανική μάθηση και οι σχετικές εφαρμογές.

Θήκες χρήσης Anaconda Python

Το Anaconda ομαδοποιεί πολλές από τις πιο κοινές βιβλιοθήκες που χρησιμοποιούνται σε εμπορικά και επιστημονικά έργα Python - SciPy, NumPy, Numba και ούτω καθεξής - και καθιστά πολλά περισσότερα από αυτά προσβάσιμα μέσω ενός προσαρμοσμένου συστήματος διαχείρισης πακέτων.

Το Anaconda ξεχωρίζει από άλλες διανομές στο πώς ενσωματώνει όλα αυτά τα κομμάτια. Κατά την εγκατάσταση, το Anaconda παρέχει μια εφαρμογή για επιτραπέζιους υπολογιστές - το Anaconda Navigator - που καθιστά κάθε πτυχή του περιβάλλοντος Anaconda διαθέσιμη μέσω ενός βολικού GUI. Η εύρεση εξαρτημάτων, η διατήρησή τους και η συνεργασία τους είναι πολύ πιο εύκολη από το κουτί με την Anaconda παρά με την CPython.

Ένα άλλο πλεονέκτημα είναι ο τρόπος με τον οποίο η Anaconda διαχειρίζεται εξαρτήματα εκτός του οικοσυστήματος Python εάν απαιτούνται για ένα συγκεκριμένο πακέτο. ο κόντα Ο διαχειριστής πακέτων, που δημιουργήθηκε ειδικά για την Anaconda, χειρίζεται την εγκατάσταση πακέτων Python και τρίτων, εξωτερικών απαιτήσεων λογισμικού.

Περιορισμοί Anaconda Python

Επειδή το Anaconda περιλαμβάνει τόσες πολλές χρήσιμες βιβλιοθήκες και μπορεί να εγκαταστήσει ακόμη περισσότερο με λίγες πατήσεις πλήκτρων, το μέγεθος μιας εγκατάστασης Anaconda μπορεί να είναι πολύ μεγαλύτερο από το CPython. Μια βασική εγκατάσταση CPython εκτελεί περίπου 100MB. Οι εγκαταστάσεις Anaconda μπορούν να αυξηθούν σε gigabyte σε μέγεθος. Αυτό μπορεί να είναι ένα πρόβλημα σε καταστάσεις όπου έχετε περιορισμούς πόρων.

Ένας τρόπος για να μειώσετε το αποτύπωμα της Anaconda είναι να εγκαταστήσετε το Miniconda, μια απογυμνωμένη έκδοση του Anaconda που περιλαμβάνει μόνο το απόλυτο ελάχιστο κομμάτι που απαιτείται για να σηκωθεί και να λειτουργήσει. Στη συνέχεια, μπορείτε να προσθέσετε πακέτα στο Miniconda όπως κρίνετε κατάλληλο, με επίκεντρο τον πόρο που καταναλώνει κάθε κομμάτι.

ActivePython

Όπως η Anaconda, το ActivePython δημιουργείται και συντηρείται από μια κερδοσκοπική εταιρεία - στην περίπτωση αυτή, το ActiveState, το οποίο εμπορεύεται έναν αριθμό γλωσσών χρόνου εκτέλεσης μαζί με το πολυγλωσσικό Komodo IDE.

Θήκες χρήσης ActivePython

Το ActivePython απευθύνεται σε εταιρικούς χρήστες και επιστήμονες δεδομένων - άτομα που θέλουν να χρησιμοποιήσουν το Python, αλλά δεν θέλουν να ξοδέψουν πολλή προσπάθεια για τη συναρμολόγηση και τη διαχείριση μιας εγκατάστασης Python. Το ActivePython χρησιμοποιεί το κανονικό της Python κουκούτσι διαχειριστής πακέτων, αλλά παρέχει επίσης μερικές εκατοντάδες κοινές βιβλιοθήκες ως επαληθευμένα πακέτα, μαζί με ορισμένες κοινές βιβλιοθήκες με εξαρτήσεις τρίτων όπως η Βιβλιοθήκη Intel Math Kernel.

Περιορισμοί ActivePython

Υπάρχει ένα πιθανό μειονέκτημα στην προσέγγιση του ActivePython στο χειρισμό πακέτων με εξωτερικές εξαρτήσεις. Εάν θέλετε να πραγματοποιήσετε αναβάθμιση σε νεότερη έκδοση ενός έργου με σύνθετες εξαρτήσεις (π.χ. TensorFlow), θα πρέπει επίσης να αναβαθμίσετε την εγκατάσταση του ActivePython. Σε περιβάλλοντα όπου η ανάπτυξη τείνει να συνδέεται με μια συγκεκριμένη έκδοση ενός έργου, αυτό είναι λιγότερο θέμα. Όμως, σε περιβάλλοντα όπου η ανάπτυξη τείνει να παρακολουθεί προηγμένες εκδόσεις, θα μπορούσε να παρουσιάσει πρόβλημα.

PyPy

Αντικατάσταση για τον διερμηνέα CPython, το PyPy χρησιμοποιεί μια συλλογή just-in-time (JIT) για να επιταχύνει την εκτέλεση των προγραμμάτων Python. Ανάλογα με την εργασία που εκτελείται, τα κέρδη απόδοσης μπορεί να είναι δραματικά.

Θήκες χρήσης PyPy

Ένα κοινό παράπονο για την Python γενικά, και ειδικότερα το CPython, είναι η ταχύτητα. Από προεπιλογή, η Python τρέχει πολλές φορές πιο αργά από το C, μερικές φορές εκατοντάδες φορές πιο αργή. Το PyPy JIT μεταγλωττίζει κώδικα Python στη γλώσσα του μηχανήματος, παρέχοντας ταχύτητα 7,7x έναντι CPython κατά μέσο όρο. Ορισμένες εργασίες εκτελούνται έως και 50 φορές πιο γρήγορα.

Το καλύτερο μέρος είναι ότι λίγη έως καθόλου προσπάθεια από την πλευρά του προγραμματιστή για να ξεκλειδώσετε αυτά τα κέρδη. Ανταλλάξτε το CPython για το PyPy και ως επί το πλείστον έχετε τελειώσει.

Περιορισμοί PyPy

Το PyPy είχε πάντα τις καλύτερες επιδόσεις με «καθαρές» εφαρμογές Python. Τα πακέτα της Python που διασυνδέονται με βιβλιοθήκες C, όπως το NumPy, δεν έχουν τακτοποιηθεί επίσης λόγω του τρόπου με τον οποίο το PyPy έχει μιμηθεί τις φυσικές δυαδικές διεπαφές του CPython. Με την πάροδο του χρόνου, ωστόσο, οι προγραμματιστές της PyPy έχουν υποχωρήσει σε αυτό το ζήτημα και έχουν κάνει το PyPy πολύ πιο συμβατό με τα περισσότερα πακέτα Python που εξαρτώνται από τις επεκτάσεις C. Εν ολίγοις, η υποστήριξη για επεκτάσεις C εξακολουθεί να είναι περιορισμένη, αλλά πολύ λιγότερο από ό, τι στο παρελθόν.

Ένα άλλο πιθανό μειονέκτημα με το PyPy είναι το μέγεθος του χρόνου εκτέλεσης. Ο βασικός χρόνος εκτέλεσης CPython στα Windows, εξαιρουμένης της τυπικής βιβλιοθήκης, είναι περίπου 4MB, ενώ ο χρόνος εκτέλεσης PyPy είναι περίπου 32MB. Σημειώστε επίσης ότι το PyPy έχει τονίσει εδώ και καιρό τον κλάδο 2.x του Python, οπότε, για παράδειγμα, το PyPy για Python 3.x είναι προς το παρόν διαθέσιμο για Windows μόνο σε μια έκδοση beta-test 32-bit. (Το PyPy διατίθεται σε εκδόσεις 64-bit για Python 2.x και 3.x για Linux και MacOS.)

Τζέθον

Το JVM (Java Virtual Machine) λειτουργεί ως χρόνος εκτέλεσης για πολλές γλώσσες εκτός από την Java. Ο μακρύς κατάλογος περιλαμβάνει τους Groovy, Scala, Clojure, Kotlin και, ναι, Python, μέσω του έργου Jython.

Θήκες χρήσης Jython

Το Jython μεταγλωττίζει τον κώδικα Python 2.x στο bytecode JVM και εκτελεί το πρόγραμμα που προκύπτει στο JVM. Σε ορισμένες περιπτώσεις, ένα πρόγραμμα που καταρτίζεται από το Jython θα τρέχει γρηγορότερα από το αντίστοιχο CPython, αλλά όχι πάντα.

Το μεγαλύτερο πλεονέκτημα που παρέχει η Jython είναι η άμεση διαλειτουργικότητα με το υπόλοιπο οικοσύστημα Java. Η Java χρησιμοποιείται ευρύτερα από την Python. Η εκτέλεση του Python στο JVM επιτρέπει στους προγραμματιστές της Python να αξιοποιήσουν ένα τεράστιο οικοσύστημα βιβλιοθηκών και πλαισίων που διαφορετικά δεν θα μπορούσαν να χρησιμοποιήσουν. Με τον ίδιο τρόπο, το Jython επιτρέπει στους προγραμματιστές Java να χρησιμοποιούν βιβλιοθήκες Python.

Περιορισμοί Jython

Το μεγαλύτερο μειονέκτημα για το Jython είναι ότι υποστηρίζει μόνο τον κλάδο 2.x της Python. Η υποστήριξη για το Python 3.x είναι υπό ανάπτυξη, αλλά υπάρχει εδώ και αρκετό καιρό. Μέχρι στιγμής δεν έχει κυκλοφορήσει τίποτα.

Σημειώστε επίσης ότι ενώ το Jython φέρνει την Python στο JVM, δεν φέρνει το Python στο Android. Καθώς δεν υπάρχει κατάλληλη θύρα Jython σε Android, το Jython δεν μπορεί να χρησιμοποιηθεί για την ανάπτυξη εφαρμογών Android.

IronPython

Ακριβώς όπως το Jython είναι μια εφαρμογή του Python στο JVM, το IronPython είναι μια εφαρμογή του Python στο .Net runtime ή CLR (Common Language Runtime). Το IronPython χρησιμοποιεί το DLR (Dynamic Language Runtime) του CLR για να επιτρέπει στα προγράμματα Python να τρέχουν με τον ίδιο βαθμό δυναμισμού που κάνουν στο CPython.

Θήκες χρήσης IronPython

Όπως η Jython, το IronPython είναι μια γέφυρα. Η μεγάλη περίπτωση χρήσης είναι η διαλειτουργικότητα μεταξύ του Python και του .Net σύμπαντος. Οι υπάρχουσες συναρμολογήσεις .Net μπορούν να φορτωθούν σε προγράμματα IronPython χρησιμοποιώντας την εγγενή σύνταξη εισαγωγής και χειρισμού αντικειμένων της Python. Είναι επίσης δυνατό να μεταγλωττίσετε τον κώδικα IronPython σε μια συνέλευση και να τον εκτελέσετε ως έχει ή να τον καλέσετε από άλλες γλώσσες. Ωστόσο, λάβετε υπόψη ότι το MSIL (Microsoft Intermediate Language) στο συγκρότημα δεν μπορεί να προσπελαστεί απευθείας από άλλες γλώσσες .Net, καθώς δεν συμμορφώνεται με την κοινή προδιαγραφή γλώσσας.

Περιορισμοί IronPython

Όπως το Jython, το IronPython υποστηρίζει προς το παρόν μόνο το Python 2.x. Ωστόσο, βρίσκονται σε εξέλιξη εργασίες για τη δημιουργία μιας εφαρμογής IronPython 3.x.

WinPython

Όπως υποδηλώνει το όνομα, το WinPython είναι μια διανομή Python που δημιουργήθηκε ειδικά για χρήστες των Microsoft Windows. Οι προηγούμενες εκδόσεις του CPython για Windows δεν ήταν καλά σχεδιασμένες και ήταν δύσκολο για τους χρήστες των Windows να επωφεληθούν πλήρως από το οικοσύστημα Python. Η έκδοση των Windows του CPython βελτιώθηκε με την πάροδο του χρόνου, αλλά το WinPython εξακολουθεί να προσφέρει πολλά πράγματα που δεν βρέθηκαν στο CPython.

Θήκες χρήσης WinPython

Το κύριο αξιοθέατο του WinPython είναι ότι είναι μια αυτόνομη έκδοση του Python. Δεν χρειάζεται να εγκατασταθεί στο μηχάνημα όπου λειτουργεί. πρέπει απλώς να αποσυσκευαστεί σε έναν κατάλογο. Αυτό καθιστά το WinPython χρήσιμο σε περιπτώσεις όπου το λογισμικό δεν μπορεί να εγκατασταθεί σε ένα δεδομένο σύστημα, σε σενάρια όπου πρέπει να διανεμηθεί ένα προκαθορισμένο χρόνο εκτέλεσης Python μαζί με τις εφαρμογές για να τρέξει σε αυτό ή όπου πολλές εκδόσεις του Python πρέπει να εκτελούνται δίπλα-δίπλα χωρίς παρεμβολή μεταξύ τους.

Το WinPython συνδυάζει επίσης πολλά πακέτα προσανατολισμένα στην επιστήμη δεδομένων - NumPy, Pandas, SciPy, Matplotlib κ.λπ. - έτσι ώστε να μπορούν να χρησιμοποιηθούν αμέσως, χωρίς πρόσθετα βήματα εγκατάστασης. Περιλαμβάνεται επίσης ένας μεταγλωττιστής C / C ++, καθώς πολλοί υπολογιστές Windows δεν έχουν συμπεριλάβει έναν και πολλές επεκτάσεις Python απαιτούν ή μπορούν να το χρησιμοποιήσουν.

Περιορισμοί WinPython

Ένας περιορισμός του WinPython είναι ότι μπορεί να περιλαμβάνει πάρα πολλά από προεπιλογή για ορισμένες περιπτώσεις χρήσης. Για να το διορθώσουμε αυτό, οι δημιουργοί του WinPython παρέχουν μια έκδοση "μηδέν" για κάθε έκδοση του WinPython, η οποία περιέχει μόνο την ελάχιστη δυνατή εγκατάσταση του προϊόντος. Περισσότερα πακέτα μπορούν να προστεθούν αργότερα, είτε με το δικό της Python κουκούτσι εργαλείο ή το βοηθητικό πρόγραμμα WPPM του WinPython.

Φορητό Python

Το Python Portable είναι ο χρόνος εκτέλεσης CPython σε ένα αυτόνομο πακέτο. Έρχεται με ευγένεια της συλλογής PortableDevApps παρόμοιων αυτόνομων εφαρμογών.

Θήκες χρήσης Python Portable

Όπως το WinPython, το Python Portable περιλαμβάνει πολλά πακέτα για επιστημονικούς υπολογιστές - Matplotlib, Numba, SymPy, SciPy, Cython και άλλα. Επίσης, όπως το WinPython, το Python Portable εκτελείται χωρίς να χρειάζεται να εγκατασταθεί επίσημα στον κεντρικό υπολογιστή των Windows. μπορεί να ζήσει σε οποιονδήποτε κατάλογο ή σε αφαιρούμενη μονάδα δίσκου. Περιλαμβάνεται επίσης ο διαχειριστής πακέτων Spyder IDE και Python, οπότε μπορείτε να προσθέσετε, να αλλάξετε ή να αφαιρέσετε πακέτα όπως απαιτείται.

Περιορισμοί Python Portable

Σε αντίθεση με το WinPython, το Python Portable δεν περιλαμβάνει μεταγλωττιστή C / C ++. Θα χρειαστεί να παράσχετε ένα μεταγλωττιστή C για να χρησιμοποιήσετε κώδικα γραμμένο με το Cython (και συνεπώς μεταγλωττισμένο στο C).

Πειραματικές διανομές Python

Αυτές οι διανομές πραγματοποιούν σημαντικές αλλαγές στο Python - είτε επειδή χρησιμοποιούν το Python ως σημείο εκκίνησης για κάτι εντελώς νέο, είτε επειδή κάνουν στρατηγικές αλλαγές στο πρότυπο Python. Σε γενικές γραμμές, αυτά τα Pythons δεν συνιστώνται ακόμη για χρήση στην παραγωγή.

Εάν ζείτε με μια βάση κώδικα Python 2.x για το άμεσο μέλλον, ίσως θελήσετε να δείτε το άρθρο μας σχετικά με τις πειραματικές διανομές Python που διατηρούν ζωντανό το Python 2.x.

MicroPython

Το MicroPython παρέχει ένα ελάχιστο υποσύνολο της γλώσσας Python που μπορεί να εκτελεστεί σε εξαιρετικά χαμηλού επιπέδου υλικό, όπως μικροελεγκτές. Το MicroPython εφαρμόζει το Python 3.4 με κάποιες διαφορές. Είναι εύκολο να γράψετε κώδικα MicroPython εάν γνωρίζετε το Python, αλλά ο υπάρχων κώδικας ενδέχεται να μην λειτουργεί ως έχει.

Pycopy