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

Python 2 EOL: Πώς να επιβιώσετε στο τέλος του Python 2

Από την 1η Ιανουαρίου 2020, ο κλάδος 2.x της γλώσσας προγραμματισμού Python δεν υποστηρίζεται πλέον από τους δημιουργούς του, το Python Software Foundation. Αυτή η ημερομηνία σηματοδοτεί το αποκορύφωμα ενός δράματος που έχει επεκταθεί εδώ και χρόνια - η μετάβαση από μια παλαιότερη, λιγότερο ικανή, ευρέως χρησιμοποιούμενη έκδοση του Python σε μια νεότερη, πιο ισχυρή έκδοση που εξακολουθεί να ακολουθεί τον προκάτοχό του στην υιοθέτηση.

Είναι ώρα. Το Python 3, με αμέτρητες τεχνικές βελτιώσεις και βελτιώσεις τελικού χρήστη πάνω από το Python 2, δεν ήταν ποτέ σε καλύτερη θέση να εκτοπίσει μόνιμα το Python 2. Η συντριπτική πλειονότητα των δημοφιλών πακέτων που φιλοξενούνται στο αποθετήριο PyPI, το πρώτο κατάστημα για επαναχρησιμοποιήσιμο κώδικα Python, υποστήριξη Python 3. Το Python 3 έχει γίνει ο προεπιλεγμένος διερμηνέας Python για πολλές διανομές Linux. Και το πιο πρόσφατο βιβλίο, ακαδημία κωδικοποίησης και διαδικτυακό σεμινάριο συνιστά το Python 3 για αρχάριους.

Τώρα τα κακά νέα. Το Python 2, όπως τα Windows 7 (ή τα Windows XP!), Θα είναι μαζί μας για τα επόμενα χρόνια. Πολλοί από εμάς θα συνεχίσουμε να βασίζουμε σε εφαρμογές που είναι γραμμένες στο Python 2. Μερικοί από εμάς θα συνεχίσουν να χρησιμοποιούν ακόμη και το Python 2 για νέες εφαρμογές, λόγω εσωτερικών περιορισμών. Τι πρέπει να κάνετε αν είστε κολλημένοι με το Python 2 σε αυτό που γίνεται γρήγορα ένας κόσμος Python 3; Ας δούμε τις επιλογές.

Python 2 τέλος της ζωής: Τι σημαίνει

Το πρώτο και πιο σημαντικό πράγμα που πρέπει να καταλάβετε για το Python 2 going EOL (τέλος της ζωής): Οι εφαρμογές Python 2 θα συνεχίσουν να εκτελούνται. Μην το θεωρείτε αυτό ως ένα ζήτημα Millennium Bug, όπου οι εφαρμογές Python 2 σταματούν μαγικά την 1η Ιανουαρίου 2020. Απλώς δεν θα υπάρχουν πια επίσημη υποστήριξη για την Python 2 από την βασική ομάδα ανάπτυξης της Python.

Εδώ είναι τι σημαίνει πρακτικά το Python 2 EOL:

  • Οι επίσημες διορθώσεις σφαλμάτων και οι ενημερώσεις ασφαλείας για το Python 2 θα σταματήσουν. Δεν θα επιδιορθωθούν πρόσφατα προβλήματα στη διερμηνεία Python 2 ή στη βασική βιβλιοθήκη Python 2 από την ομάδα ανάπτυξης. Ωστόσο, οι εμπορικοί προμηθευτές θα μπορούσαν να διατηρήσουν το Python 2 από μόνοι τους, και άλλα τρίτα μέρη θα μπορούσαν να διασκεδάσουν τη βάση κώδικα Python 2 και να συνεχίσουν από εκεί που η κεντρική ομάδα έφυγε. (Περισσότερα για αυτό αργότερα.)
  • Τα έργα Python τρίτων θα εγκαταλείψουν το Python 2. Οι βιβλιοθήκες που έχουν υποστηρίξει τόσο το Python 2 όσο και το Python 3 θα αρχίσουν να αφιερώνουν τους πόρους τους αποκλειστικά στο Python 3. Πολλά από αυτά τα έργα λειτουργούν εθελοντικά και είναι πολύ λιγότερο δουλειά να υποστηρίξουμε μόνο μία έκδοση της γλώσσας. Κάθε έργο θα αποφασίσει για την υποστήριξη του Python 2, αλλά πολλά μεγάλα έργα της Python δεσμεύονται να εγκαταλείψουν πλήρως την υποστήριξη Python 2 έως το 2020.
  • Η υποστήριξη της πλατφόρμας για το Python 2 θα μειωθεί. Οι διανομές Linux και οι πάροχοι υπηρεσιών cloud ενδέχεται να συνεχίσουν να περιλαμβάνουν το χρόνο εκτέλεσης του Python 2. Αλλά περιμένετε ότι η υποστήριξη για το Python 2 θα γίνει λιγότερο ισχυρή με την πάροδο του χρόνου. Θα είναι σχεδόν βέβαιο ότι θα είναι δυνατή η εκτέλεση μιας κοντέινερ έκδοσης του Python 2 σε μια πλατφόρμα cloud, αλλά δεν υπάρχει καμία εγγύηση ότι οι πάροχοι υπηρεσιών cloud θα συνεχίσουν να συντηρούν τα δικά τους κοντέινερ Python 2.

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

Μετάβαση μακριά από το Python 2

Το να αφήσετε πίσω το Python 2 για το Python 3 μπορεί να είναι ευκολότερο από το αναμενόμενο, ανάλογα με το μέγεθος της βάσης κώδικα και τις εξωτερικές εξαρτήσεις. Η επίσημη τεκμηρίωση της Python έχει μερικά απλά βήματα που μπορείτε να κάνετε για να προσδιορίσετε εάν το έργο σας είναι "μελλοντικό-απόδειξη" - δηλαδή, μπορεί να χρησιμοποιηθεί στο Python 3 με μικρή ή καθόλου προσαρμογή. Ένα από τα καλύτερα πρώτα βήματα που μπορείτε να κάνετε είναι να χρησιμοποιήσετε τοcaniusepython3 πακέτο για να μάθετε ποια, εάν υπάρχουν, στοιχεία ή εξαρτήσεις θα μπλοκάρουν μια μετεγκατάσταση.

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

οπολύ λιγότερο μπορείτε να κάνετε, εάν πρέπει να παραμείνετε στο Python 2 σε κάποια μορφή, ξεκινάτε μετεγκαθιστώντας στην τελευταία έκδοση του Python 2 - Python 2.7.16 από αυτό το γράψιμο - και χρησιμοποιήστε το ως σημείο εκκίνησης για το Python 3. Με αυτόν τον τρόπο θα επωφεληθείτε από τις διορθώσεις σφαλμάτων που θα είναι διαθέσιμες για το Python 2.7 πριν από το επίσημο τέλος της ζωής του.

Χρησιμοποιήστε έναν εναλλακτικό χρόνο εκτέλεσης Python 2

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

Ταουτόν

Το Tauthon είναι ένα πιρούνι του Python 2.7.18 "με νέα σύνταξη, ενσωματωμένα και βιβλιοθήκες που υποστηρίζονται από το Python 3.x", σύμφωνα με το README του έργου. Το Tauthon περιλαμβάνει επίσης, όποτε οι συντηρητές μπορούν να τους παρέχουν, διορθώσεις και ενημερώσεις κώδικα για τη γλώσσα. Θεωρητικά, ο Tauthon πρέπει να λειτουργεί ως αντικαταστάτης του Python 2.7. Η πιο πρόσφατη κυκλοφορία αυτής της γραφής, Tauthon 2.8.2, περιλαμβάνει σχολιασμούς συναρτήσεων, ορίσματα μόνο για λέξεις-κλειδιά, async / περιμένετε σύνταξη και άλλες λειτουργίες που ήταν παλαιότερα διαθέσιμες μόνο στο Python 3.

PyPy

Το PyPy, το just-in-time επιταχυνόμενο χρόνο εκτέλεσης για το Python, χρησιμοποιεί το Python 2 ως βασικό μέρος της δικής του εσωτερικής υποδομής και υποστηρίζει από καιρό το Python 2 ως κύρια έκδοση. Η τεκμηρίωση για το έργο ισχυρίζεται «δεδομένου ότι το RPython [το ίδρυμα του PyPy] είναι χτισμένο πάνω από το Python 2 και αυτό είναι εξαιρετικά απίθανο να αλλάξει, η έκδοση Python 2 του PyPy θα είναι« για πάντα », δηλαδή όσο το ίδιο το PyPy είναι περίπου." Το PyPy ενδέχεται να δημιουργήσει προβλήματα συμβατότητας ή απόδοσης με ορισμένα πακέτα Python που βασίζονται σε επεκτάσεις C, αν και η ομάδα ανάπτυξης της PyPy εργάζεται συνεχώς για να εξαλείψει αυτά τα ζητήματα.

IronPython

Το IronPython, μια εφαρμογή Python για το .Net runtime, έχει μια έκδοση Python 2 που εξακολουθεί να λαμβάνει ενεργή υποστήριξη. Η τρέχουσα λίστα προγραμματιστών της έχει δηλώσει ότι δεν είναι πιθανό να υποστηρίξει το Python 2 μετά το 2020, τόσο καλύτερα να επικεντρωθεί στο IronPython3. Ωστόσο, αυτό δεν σημαίνει ότι κάποιος άλλος δεν θα μπορούσε να συνεχίσει τέτοια υποστήριξη μόνος του.

Κύθωνα

Μια άλλη πιθανότητα, αν και με περιορισμένο παράθυρο υποστήριξης, είναι η Cython. Η Cython μεταγλωττίζει το Python σε C με προαιρετική πληκτρολόγηση για βελτιώσεις στην απόδοση και έχει υποστηρίξει το Python 2 από την έναρξή του. Είναι δυνατό να χρησιμοποιήσετε το Cython για να μετατρέψετε τον κώδικα Python 2 σε C για συνεχή χρήση ως "κατεψυγμένο" δυαδικό. Μπορεί να αυξήσετε ακόμη και την απόδοση, ανάλογα με τη φύση της εφαρμογής. (Τα προγράμματα που δεσμεύονται κυρίως από το I / O δεν θα έχουν μεγάλη βελτίωση.)

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

Αγοράστε εκτεταμένη υποστήριξη Python 2 από έναν προμηθευτή

Μία μακροπρόθεσμη λύση είναι να λάβετε υποστήριξη από έναν προμηθευτή λύσεων Python. Το ActiveState, δημιουργός της διανομής ActivePython και του Komodo IDE, προσφέρει εμπορική υποστήριξη σε πελάτες που θέλουν να μείνουν στο Python 2 ή που θέλουν να μεταναστεύσουν στο Python 3, προσδιορίζοντας τα μέρη της στοίβας τους Python που πρέπει να ξαναγραφούν στο Python 3.

Ορισμένοι προμηθευτές παρέχουν υποστήριξη για το Python 2 ως μέρος της παρουσίας του σε άλλο υποστηριζόμενο προϊόν. Οι εκδόσεις Red Hat Enterprise Linux 6 και 7 περιλαμβάνουν το Python 2, οπότε τυχόν συμβόλαια υποστήριξης που αγοράστηκαν από την Red Hat για αυτές τις εκδόσεις του λειτουργικού συστήματος θα περιλαμβάνουν συνεχή υποστήριξη για το Python 2 μέσω της διάρκειας ζωής του προϊόντος.

Εάν χρησιμοποιείτε το Python 2 μέσω μιας υπηρεσίας cloud, υπάρχει πιθανότητα η υπηρεσία να συνεχίσει να υποστηρίζει το Python 2 με τον δικό της τρόπο. Η AWS, για παράδειγμα, δήλωσε ότι θα παρέχει ενημερώσεις ασφαλείας για το χρόνο εκτέλεσης του Python 2.7 έως τις 31 Δεκεμβρίου 2020, αν και αυτό δεν ισχύει για πακέτα Python 2.7 τρίτων.

Μια τρίτη επιλογή είναι να αγοράσετε υποστήριξη από μια εταιρεία συμβούλων ή ανάδοχο. Το επίπεδο υποστήριξης που σας παρέχει ποικίλλει ανάλογα με τις ανάγκες και τις φιλοδοξίες σας. Θα μπορούσε να συνίσταται στο να καταλήξουμε σε ένα σχέδιο μετάβασης για να απομακρυνθούμε από το Python 2 και να ξαναγράψουμε οποιοδήποτε εξαρτημένο λογισμικό (πιθανώς την καλύτερη μακροπρόθεσμη στρατηγική) ή να συγχωνεύσουμε χειροκίνητα patches για το Python 2 σε μια προσαρμοσμένη έκδοση του χρόνου εκτέλεσης (φιλόδοξος και περίπλοκος ).

Διατηρήστε τον Python 2 μόνοι σας

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

Μην κάνεις τίποτα

Εάν δεν είναι σπασμένο, μην το διορθώσετε. Αυτή είναι η στρατηγική που χρησιμοποίησαν πολλές επιχειρήσεις με τα Windows NT και Windows 2000 όταν αυτά τα λειτουργικά συστήματα τέθηκαν στο τέλος του κύκλου ζωής τους. Θεωρητικά, οι εφαρμογές Python που προορίζονται μόνο για εσωτερική χρήση και δεν εκτίθενται στο δημόσιο Διαδίκτυο, μπορούν να εκτελεστούν επ 'αόριστον.

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

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

Διαβάστε περισσότερα για Python

  • Τι είναι το Python; Ισχυρός, διαισθητικός προγραμματισμός
  • Τι είναι το PyPy; Γρηγορότερη Python χωρίς πόνο
  • Τι είναι το Cython; Python με ταχύτητα C
  • Εκμάθηση Cython: Πώς να επιταχύνετε το Python
  • Πώς να εγκαταστήσετε το Python με τον έξυπνο τρόπο
  • Οι καλύτερες νέες δυνατότητες στο Python 3.8
  • Καλύτερη διαχείριση έργου Python με την Ποίηση
  • Virtualenv και venv: Εξηγήθηκαν εικονικά περιβάλλοντα Python
  • Το Python virtualenv και το venv κάνουν και δεν πρέπει
  • Η εξήγηση και οι υποεπεξεργασίες Python εξηγούνται
  • Πώς να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων Python
  • Πώς να χρησιμοποιήσετε το χρονοδιάγραμμα για τον προφίλ κώδικα Python
  • Πώς να χρησιμοποιήσετε το cProfile για να προβάλετε τον κώδικα Python
  • Ξεκινήστε με το async στο Python
  • Πώς να χρησιμοποιήσετε το asyncio στο Python
  • Πώς να μετατρέψετε το Python σε JavaScript (και να επιστρέψετε ξανά)
  • Python 2 EOL: Πώς να επιβιώσετε στο τέλος του Python 2
  • 12 Pythons για κάθε ανάγκη προγραμματισμού
  • 24 βιβλιοθήκες Python για κάθε προγραμματιστή Python
  • 7 γλυκά IDE Python που ίσως έχετε χάσει
  • 3 μεγάλες αδυναμίες της Python - και οι λύσεις τους
  • Συγκρίθηκαν 13 πλαίσια Ιστού Python
  • 4 Πλαίσια δοκιμής Python για τη συντριβή των σφαλμάτων σας
  • 6 υπέροχες νέες δυνατότητες Python που δεν θέλετε να χάσετε
  • 5 Διανομές Python για την εξάσκηση της μηχανικής μάθησης
  • 8 υπέροχες βιβλιοθήκες Python για επεξεργασία φυσικής γλώσσας
$config[zx-auto] not found$config[zx-overlay] not found