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, който ще бъде EOL (края на живота): Приложенията на Python 2 все още ще се изпълняват. Не мислете за това като за проблем на хилядолетието, при който всички приложения на 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 и доставчиците на облачни услуги може да продължат да включват изпълнението на Python 2. Но очаквайте поддръжката на Python 2 да стане по-малко стабилна с течение на времето. Почти сигурно все още ще е възможно да стартирате контейнеризирана версия на Python 2 на облачна платформа, но няма гаранция, че доставчиците на облачни услуги ще продължат да поддържат свои собствени 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 „с нов синтаксис, вградени модули и библиотеки, backported от Python 3.x“, според README на проекта. Tauthon също така включва, когато поддържащите могат да им предоставят, корекции и корекции за езика. На теория Tauthon трябва да работи като заместител на Python 2.7. Най-новата версия към момента на написването, Tauthon 2.8.2, включва анотации на функции, аргументи само за ключови думи, async/awaitсинтаксис и други функции, които преди са били достъпни само в Python 3.

PyPy

PyPy, ускореното време за изпълнение на Python навреме, използва Python 2 като ключова част от собствената си вътрешна инфраструктура и отдавна поддържа Python 2 като основна версия. Документацията за проекта твърди „тъй като RPython [основата на PyPy] е изградена върху Python 2 и това е изключително малко вероятно да се промени, версията на PyPon 2 на Python ще бъде около„ завинаги “, т.е. докато самата PyPy е наоколо. " PyPy може да създаде проблеми със съвместимостта или производителността на някои пакети на Python, които разчитат на разширения C, въпреки че екипът за разработка на PyPy работи постоянно, за да изглади тези проблеми.

IronPython

IronPython, изпълнение на Python за изпълнението на .Net, има версия на Python 2, която все още получава активна поддръжка. Настоящият му списък от разработчици заяви, че няма вероятност да поддържа Python 2 след 2020 г., толкова по-добре да се концентрира върху IronPython3. Това обаче не означава, че някой друг не би могъл да продължи такава подкрепа сам.

Cython

Друга възможност, макар и с ограничен прозорец за поддръжка, е Cython. Cython компилира Python в C с незадължително писане за подобряване на производителността и поддържа Python 2 от самото му създаване. Възможно е да се използва Cython за конвертиране на Python 2 код в C за продължителна употреба като „замразен“ двоичен файл. Можете дори да увеличите производителността, като го направите, в зависимост от естеството на приложението. (Програмите, които са главно свързани с входа / изхода, няма да видят особено подобрение.)

Cython обаче планира да откаже поддръжката на Python 2 до края на годината. Това не означава, че програмите на Python 2 вече няма да се компилират в Cython, а само че кодът на Cython, използващ Python 2 синтаксис, ще трябва да бъде компилиран с помощта на Python 3

Купете разширена поддръжка на Python 2 от доставчик

Едно дългосрочно решение е да се получи подкрепа от доставчик на решения на Python. ActiveState, създател на дистрибуцията ActivePython и IDE на Komodo, предлага търговска поддръжка за клиенти, които искат да останат с Python 2 или които искат да мигрират към Python 3, като идентифицират частите от своя стек на Python, които трябва да бъдат пренаписани в Python 3.

Някои доставчици предоставят поддръжка за Python 2 като част от присъствието му в друг поддържан продукт. Red Hat Enterprise Linux версии 6 и 7 включват Python 2, така че всички договори за поддръжка, закупени от Red Hat за тези версии на операционната система, ще включват непрекъсната поддръжка за Python 2 през целия живот на поддръжката на продукта.

Ако използвате Python 2 чрез облачна услуга, има шанс услугата да продължи да поддържа Python 2 по свой начин. AWS, например, заяви, че ще осигури корекции за сигурност за своето изпълнение на Python 2.7 до 31 декември 2020 г., въпреки че това не се отнася за пакети на Python 2.7 на трети страни.

Трети вариант е закупуването на поддръжка от консултантска фирма или изпълнител. Нивото на подкрепа, която ви оказват, ще варира в зависимост от вашите нужди и амбиции. Може да се състои в изготвяне на план за преход за отдалечаване от Python 2 и пренаписване на зависим софтуер (вероятно най-добрата дългосрочна стратегия) или ръчно обединяване на кръпки за 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 дебъгер
  • Как да използвам timeit за профилиране на 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 за обработка на естествен език