Python 2 EOL: איך לשרוד את סוף Python 2

החל מ -1 בינואר 2020, הענף 2.x של שפת התכנות Python כבר אינו נתמך על ידי יוצריו, Python Software Foundation. תאריך זה מסמן את שיאה של דרמה שנמשכה כבר שנים - המעבר מגרסה ישנה יותר, פחות מסוגלת, של פייתון בשימוש נרחב לגרסה חדשה וחזקה יותר שעדיין עוקבת אחר קודמתה לאימוץ.

הגיע הזמן. Python 3, עם אינספור שיפורים טכניים ומשתמשי קצה ביחס ל- Python 2, מעולם לא היה במצב טוב יותר לעקור לצמיתות את Python 2. הרוב המכריע של החבילות הפופולריות המתארחות במאגר PyPI, התחנה הראשונה לקוד פיתון לשימוש חוזר, תומך בפייתון 3. פייתון 3 הפך להיות מתורגמן ברירת המחדל של פייתון עבור הפצות לינוקס רבות. ורוב כל ספר אחרון, אקדמיה לקידוד והדרכה מקוונת ממליצים על Python 3 למתחילים.

עכשיו החדשות הרעות. Python 2, כמו Windows 7 (או Windows XP!), יהיה איתנו במשך שנים רבות. רבים מאיתנו ימשיכו להסתמך על אפליקציות שנכתבו בפייתון 2. חלקנו אפילו ימשיכו להשתמש בפייתון 2 לאפליקציות חדשות, בגלל מגבלות פנימיות. מה עליך לעשות אם אתה תקוע עם Python 2 במה שהופך במהירות לעולם Python 3? בואו נסתכל על האפשרויות. 

סוף החיים של פייתון 2: מה זה אומר

הדבר הראשון והחשוב ביותר שיש להבין לגבי פיתון 2 שהולך ל- EOL (סוף החיים): יישומי פייתון 2 עדיין יפעלו. אל תחשוב על זה כעל בעיה של Millennium Bug, שבה יישומי Python 2 כולם נרתמים עד כדי קסם ב -1 בינואר 2020. פשוט לא תהיה עוד תמיכה רשמית ב-  Python 2 מצוות פיתוח הליבה של Python.

הנה מה שפירושו של Python 2 EOL מבחינה מעשית:

  • תיקוני באגים ותיקוני אבטחה רשמיים עבור Python 2 יפסיקו.  צוות פיתוח הליבה לא יתוקן שום בעיות שזה עתה התגלו במתורגמן Python 2 או בספרייה הסטנדרטית של Python 2. עם זאת, ספקים מסחריים יכלו לתחזק את Python 2 בכוחות עצמם, וצדדים שלישיים אחרים יוכלו להזין את בסיס הקוד של Python 2 ולהמשיך במקום בו צוות הליבה הפסיק. (עוד על כך בהמשך.)
  • פרויקטים של צד שלישי בפייתון יפקירו את פייתון 2. ספריות שתמכו הן בפייתון 2 והן בפייתון 3 יתחילו להקדיש את המשאבים שלהם לפייתון 3 באופן בלעדי. רבים מהפרויקטים הללו מנוהלים בהתנדבות, והרבה פחות עבודה לתמוך בגרסה אחת בלבד של השפה. כל פרויקט יחליט על תמיכת Python 2 לעצמו, אך פרויקטים גדולים רבים של Python מתחייבים להוריד את תמיכת Python 2 לחלוטין עד 2020.
  • תמיכת הפלטפורמה לפייתון 2 תפוג. הפצות לינוקס וספקי שירותי ענן עשויים להמשיך לכלול את זמן הריצה של Python 2. אך צפו שהתמיכה בפייתון 2 תהיה פחות חזקה לאורך זמן. כמעט בוודאות עדיין ניתן יהיה להריץ גרסת מיכל של Python 2 על פלטפורמת ענן, אך אין שום ערובה כי ספקי שירותי ענן ימשיכו לתחזק מכולות Python 2 משלהם.

אם אתה תקוע ביישומי Python 2, כיצד עליך להתמודד עם היעדר תמיכה ב- Python 2? הדבר הטוב ביותר לעשות לטווח הארוך הוא למצוא אסטרטגיה להסרת כל התלות שלך בפייתון 2. אבל זו רק הראשונה מבין אפשרויות רבות. 

מעבר הרחק מפייתון 2

השארת Python 2 ל- Python 3 עשויה להיות קלה יותר ממה שאתה מצפה, תלוי בגודל בסיס הקוד והתלות החיצונית. בתיעוד הרשמי של Python יש כמה צעדים פשוטים שתוכל לנקוט כדי לקבוע אם הפרויקט שלך "מוגן לעתיד" - כלומר, ניתן להשתמש ב- Python 3 ללא התאמה מועטה או ללא. אחד הצעדים הראשונים הטובים ביותר שאתה יכול לנקוט הוא להשתמש  caniusepython3בחבילה כדי להבין אילו, אם בכלל, רכיבים או תלות יחסימו הגירה.

אם אתה תקוע עם Python 2 מכיוון שרכיב מסוים ביישום עובד רק ב- Python 2, התחל במעבר הרחק מאותו רכיב. בדוק אם קיימת חלופה שתואמת ל- Python 3 ואז בנה מחדש את היישום מנקודה זו החוצה. הרעיון הוא לחפש את המקומות הקטנים ביותר שבהם תלויות האדם בפייתון 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 כולל גם, בכל פעם שהתחזוקה יכולה לספק להם, תיקונים ותיקונים עבור השפה. בתיאוריה טאוטון צריך לעבוד כתחליף טיפה לפייתון 2.7. המהדורה האחרונה נכון לכתיבת שורות אלה, Tauthon 2.8.2, כוללת הערות פונקציות, ארגומנטים למילות מפתח בלבד, async/awaitתחביר ותכונות אחרות שהיו זמינות בעבר רק ב- Python 3.

PyPy

PyPy, זמן הריצה המואץ בדיוק עבור Python, משתמש ב- Python 2 כחלק מרכזי בתשתית הפנימית שלו ותמך זה מכבר ב- Python 2 כגרסתו העיקרית. בתיעוד לפרויקט טוענים כי "מכיוון ש- RPython [יסוד ה- PyPy] בנוי על גבי ה- Python 2 וזה מאוד לא סביר שישתנה, גרסת ה- Python 2 של PyPy תהיה בסביבה 'לנצח', כלומר כל עוד PyPy עצמה היא סְבִיב." PyPy עשוי להוות בעיות תאימות או ביצועים עם כמה חבילות Python המסתמכות על סיומות C, אם כי צוות הפיתוח של PyPy פועל ללא הרף כדי לגהץ בעיות אלה.

IronPython

ל- IronPython, יישום Python לזמן הריצה של .Net, יש גרסת Python 2 שעדיין זוכה לתמיכה פעילה. סגל המפתחים הנוכחי שלה הכריז כי הם לא צפויים לתמוך בפייתון 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 מספק

פיתרון ארוך טווח אחד הוא להשיג תמיכה מספק של פתרונות פייתון. ActiveState, יוצר ההפצה של ActivePython ו- Komodo IDE, מציע תמיכה מסחרית ללקוחות שרוצים להישאר עם Python 2, או שרוצים לעבור ל- Python 3 על ידי זיהוי החלקים של ערימת ה- Python שלהם שיש לכתוב מחדש בפייתון 3.

ספקים מסוימים מספקים תמיכה ב- Python 2 כחלק מהימצאותו במוצר נתמך אחר. גרסאות 6 ו- 7 של Red Hat Enterprise Linux כוללות את Python 2, כך שכל חוזי תמיכה שנרכשו מ- Red Hat עבור אותן גרסאות של מערכת ההפעלה יכללו תמיכה מתמשכת ב- Python 2 לאורך חיי התמיכה של המוצר.

אם אתה משתמש ב- Python 2 באמצעות שירות ענן, יש סיכוי שהשירות ימשיך לתמוך ב- Python 2 בדרכו שלו. AWS, למשל, הצהירה כי תספק תיקוני אבטחה לזמן הריצה של פייתון 2.7 עד ליום 31 בדצמבר 2020, אם כי זה לא חל על כל חבילות Python 2.7 של צד שלישי.

אפשרות שלישית היא לרכוש תמיכה מחברת ייעוץ או קבלן. רמת התמיכה שהם נותנים לך תשתנה בהתאם לצרכים והשאיפות שלך. זה יכול להיות מורכב ממציאת תוכנית מעבר להתרחקות מפייתון 2 ושכתוב של כל תוכנה תלויה (כנראה האסטרטגיה הטובה ביותר לטווח הארוך), או מיזוג טלאים ידנית של פייתון 2 לבנייה מותאמת אישית של זמן הריצה (שאפתנית ומורכבת ).

שמרו על פייתון 2 בעצמכם

פייתון הוא פרויקט קוד פתוח. אין שום דבר שמונע ממך ליישם את התיקונים הדרושים בעצמך. אם התיקון הוא שינוי בספרייה הסטנדרטית של Python, זה בדרך כלל לא קשה מדי, מכיוון שרוב הספרייה הסטנדרטית של Python כתובה בעצמה ב- Python. אבל אם אתה צריך לבצע שינויים במודול C המשמש את Python בספרייה הרגילה, או במתורגמן CPython, זה יהיה מאתגר יותר. יהיה עליך להכיר את C ולהכיר את הפנימיות של CPython כדי להשיג זאת.

לעשות כלום

אם זה לא נשבר, אל תקן את זה. זוהי האסטרטגיה שעסקים רבים השתמשו בה עם Windows NT ו- Windows 2000 כאשר מערכות ההפעלה הללו הושלמו בסוף החיים. באופן תיאורטי ניתן יהיה להריץ יישומי פיתון המיועדים לשימוש פנימי בלבד ואינם חשופים לאינטרנט הציבורי.

מכונות וירטואליות ומכולות מספקות דרכים לשמור על יישומים מסוג זה בחיים ובסביבה מבוקרת. באפשרותך "להקפיא" מהדורה נתונה של זמן הריצה של Python 2 לתמונת מיכל או VM, יחד עם הספרייה הסטנדרטית שלו, המודולים הדרושים לאפליקציה שלך והיישום עצמו.

עם זאת, יש לבצע הערכה קבועה של כל אפליקציה מדור קודם, אפילו כזו שאין לה חשיפה חיצונית. בכל מקרה, האסטרטגיה הטובה ביותר לטווח הארוך עבור משתמשי Python 2 היא לעבור לפייתון 3. Python 2, גדול ככל שהיה, הוא משהו שעבר על פניו.

קרא עוד על Python

  • מה זה פיתון? תכנות עוצמתי ואינטואיטיבי
  • מה זה PyPy? פיתון מהיר יותר ללא כאבים
  • מה זה סיטון? פיתון במהירות C
  • מדריך Cython: כיצד להאיץ את Python
  • כיצד להתקין את פייתון בדרך החכמה
  • התכונות החדשות הטובות ביותר ב- Python 3.8
  • ניהול פרויקטים טוב יותר של פייתון עם שירה
  • Virtualenv ו- venv: הסברים על סביבות וירטואליות של Python
  • Python virtualenv ו- venv do's and donts
  • הסבר על השחלת פיתון ותהליכי משנה
  • כיצד להשתמש בבאגים של פייתון
  • כיצד להשתמש ב- timeit לפרופיל קוד פייתון
  • כיצד להשתמש ב- cProfile לפרופיל קוד פייתון
  • התחל לעבוד עם אסינכרון בפייתון
  • כיצד להשתמש ב- asyncio בפייתון
  • כיצד להמיר את פייתון ל- JavaScript (ובחזרה)
  • Python 2 EOL: איך לשרוד את סוף Python 2
  • 12 פיתונים לכל צורך בתכנות
  • 24 ספריות פייתון לכל מפתח פיתון
  • 7 מזהי פייתון מתוקים שאולי פספסתם
  • 3 ליקויים גדולים בפייתון - והפתרונות שלהם
  • 13 מסגרות אינטרנט של פייתון בהשוואה
  • 4 מסגרות מבחן פייתון כדי למחוץ את החרקים שלך
  • 6 תכונות פייתון חדשות נהדרות שאתה לא רוצה לפספס
  • 5 הפצות פיתון לשליטה בלמידת מכונה
  • 8 ספריות פיתון נהדרות לעיבוד שפות טבעיות