Programovanie

Python 2 EOL: Ako prežiť koniec Pythonu 2

Od 1. januára 2020 už tvorcovia Python Software Foundation nepodporujú vetvu 2.x programovacieho jazyka Python. Týmto dátumom sa završuje dráma, ktorá sa tiahne rokmi - prechod zo staršej, menej schopnej a často používanej verzie Pythonu na novšiu a výkonnejšiu verziu, ktorá sa pri adopcii stále drží predchodcu.

Je najvyšší čas. Python 3, s nespočetnými technickými vylepšeniami a vylepšeniami pre koncových používateľov oproti Pythonu 2, nikdy nebol v lepšej pozícii, aby natrvalo vytlačil Python 2. Prevažná väčšina populárnych balíkov hostovaných v úložisku PyPI, ktoré je prvou zastávkou opakovane použiteľného kódu Pythonu, podpora Pythonu 3. Python 3 sa stal predvoleným interpretom Pythonu pre mnoho distribúcií Linuxu. A každá nová kniha, akadémia kódovania a online tutoriál odporúčajú Python 3 pre začiatočníkov.

Teraz zlá správa. Python 2, podobne ako Windows 7 (alebo Windows XP!), Tu s nami bude ešte roky. Mnoho z nás sa bude naďalej spoliehať na aplikácie napísané v Pythone 2. Niektorí z nás kvôli vnútorným obmedzeniam dokonca budú aj naďalej používať Python 2 pre nové aplikácie. Čo by ste mali robiť, ak narazíte na Python 2 v tom, z čoho sa rýchlo stáva svet Python 3? Pozrime sa na možnosti.

Koniec života v Pythone 2: Čo to znamená

Prvá a najdôležitejšia vec, ktorú treba pochopiť o tom, že Python 2 bude EOL (koniec životnosti): Aplikácie Pythonu 2 budú stále bežať. Neuvažujte o tomto ako o probléme Millennium Bug, kde sa aplikácie Pythonu 2 magicky zastavia 1. januára 2020. Už nebude viac štátna podpora pre Python 2 od základného vývojového tímu Pythonu.

V praxi to znamená, čo Python 2 EOL znamená:

  • Oficiálne opravy chýb a bezpečnostné opravy pre Python 2 prestanú platiť. Tím vývojárov jadra neopraví žiadne novoobjavené problémy v tlmočníkovi Pythonu 2 alebo štandardnej knižnici Pythonu 2. Komerční dodávatelia však mohli udržiavať program Python 2 svojpomocne a ďalšie tretie strany mohli rozdeliť kódovú základňu Python 2 a pokračovať tam, kde hlavný tím prestal. (Viac o tom neskôr.)
  • Projekty Pythonu tretích strán opustia program Python 2. Knižnice, ktoré podporujú Python 2 aj Python 3, začnú svoje zdroje venovať výlučne Pythonu 3. Mnoho z týchto projektov je riadených dobrovoľníkmi a je oveľa menej práce podporovať iba jednu verziu jazyka. Každý projekt rozhodne o podpore Pythonu 2 pre seba, ale veľa veľkých projektov Pythonu sa zaväzuje úplne zrušiť podporu Pythonu 2 do roku 2020.
  • Podpora platformy pre Python 2 bude klesať. Distribúcie systému Linux a poskytovatelia cloudových služieb môžu aj naďalej obsahovať runtime Python 2. Očakávajte však, že podpora pre Python 2 bude časom menej robustná. Takmer určite bude naďalej možné prevádzkovať kontajnerovanú verziu Pythonu 2 na cloudovej platforme, ale neexistuje záruka, že poskytovatelia cloudových služieb budú naďalej udržiavať svoje vlastné kontajnery Python 2.

Ak narazíte na aplikácie Pythonu 2, ako by ste sa mali vyrovnať s absenciou podpory Pythonu 2? Najlepšie urobíte z dlhodobého hľadiska stratégiou na odstránenie všetkých svojich závislostí na Pythone 2. Je to však len prvá z mnohých možností.

Prechod od Pythonu 2

Opustenie programu Python 2 pre program Python 3 môže byť jednoduchšie, ako čakáte, v závislosti od veľkosti kódovej základne a externých závislostí. Oficiálna dokumentácia Pythonu obsahuje niekoľko priamych krokov, pomocou ktorých môžete zistiť, či je váš projekt „zabezpečený do budúcnosti“ - tj. Je možné ho v Pythone 3 použiť s malými alebo žiadnymi úpravami. Jedným z najlepších prvých krokov, ktoré môžete podniknúť, je použitie súborucaniusepython3 balík na zistenie, ktoré komponenty alebo závislosti by, ak existujú, blokujú migráciu.

Ak sa vám program Python 2 zasekol, pretože konkrétny komponent aplikácie funguje iba v systéme Python 2, začnite prechodom od tohto komponentu. Zistite, či existuje alternatíva, ktorá je kompatibilná s Pythonom 3, a potom aplikáciu znova zostavte. Cieľom je hľadať najmenšie miesta, kde ležia závislosti človeka na Pythone 2, a riešiť ich.

Theúplne najmenej môžete urobiť, ak v určitej podobe musíte zostať na Pythone 2, začnite migráciou na najnovšiu verziu Pythonu 2 - Python 2.7.16 od tohto písania - a použite ju ako východiskový bod pre Python 3. Týmto spôsobom budete mať úžitok z opráv chýb, ktoré budú k dispozícii pre Python 2.7 pred jeho oficiálnym koncom životnosti.

Použite alternatívny runtime Python 2

Ak zmena kódového základu Pythonu 2 nie je uskutočniteľná záležitosť, ďalšou alternatívou je použitie iného behu programu Python 2 vyvinutého treťou stranou. Alternatívne runtime Python 2 môžu mať dlhšie okno podpory ako samotný Python 2.

Tauthon

Tauthon je vidlicou Pythonu 2.7.18 „s novou syntaxou, zabudovanými modulmi a knižnicami spätneportovanými z Pythonu 3.x,“ uvádza sa v dokumente README. Tauthon tiež zahrnuje, kedykoľvek im to môže poskytnúť správca, opravy a opravy jazyka. Teoreticky by mal Tauthon fungovať ako náhrada za Python 2.7. Posledné vydanie tohto písania, Tauthon 2.8.2, obsahuje anotácie funkcií, argumenty iba pre kľúčové slová, asynchronizovať / čakať syntax a ďalšie funkcie predtým dostupné iba v Pythone 3.

PyPy

PyPy, zrýchlený modul runtime just-in-time pre Python, používa Python 2 ako kľúčovú súčasť vlastnej internej infraštruktúry a už dlho podporuje Python 2 ako svoju hlavnú verziu. Dokumentácia k projektu tvrdí „keďže RPython [základ PyPy] je postavený na Pythone 2 a je veľmi nepravdepodobné, že by sa zmenil, verzia PyPy pre Python 2 bude okolo„ navždy “, tj. Pokiaľ bude PyPy sám okolo." PyPy môže predstavovať problémy s kompatibilitou alebo výkonom s niektorými balíčkami Pythonu, ktoré sa spoliehajú na rozšírenia C, hoci vývojový tím PyPy neustále pracuje na ich odstránení.

IronPython

IronPython, implementácia Pythonu pre runtime .Net, má verziu Pythonu 2 stále dostávajúcu aktívnu podporu. Jeho súčasný zoznam vývojárov deklaroval, že pravdepodobne nepodporuje Python 2 po roku 2020, tým lepšie je sústrediť sa na IronPython3. To však neznamená, že niekto iný nemôže sám pokračovať v takejto podpore.

Cython

Ďalšou možnosťou, aj keď tiež s obmedzeným časom podpory, je Cython. Cython kompiluje Python do C s voliteľným písaním pre vylepšenie výkonu a podporuje Python 2 od jeho vzniku. Je možné použiť Cython na konverziu kódu Pythonu 2 na C na ďalšie použitie ako „zamrznutý“ binárny súbor. Týmto by ste mohli dokonca dosiahnuť zvýšenie výkonu v závislosti od povahy aplikácie. (Programy, ktoré sú viazané hlavne na I / O, veľké zlepšenie nezažijú.)

Cython však plánuje zrušiť podporu Pythonu 2 do konca roka. To neznamená, že programy Pythonu 2 sa už nebudú kompilovať do Cythonu, len bude treba skompilovať kód Cythonu pomocou syntaxe Pythonu 2 pomocou Pythonu 3

Kúpte si rozšírenú podporu Pythonu 2 od dodávateľa

Jedným z dlhodobých riešení je získanie podpory od dodávateľa riešení v jazyku Python. ActiveState, tvorca distribúcie ActivePython a Komodo IDE, ponúka komerčnú podporu zákazníkom, ktorí chcú zostať v Pythone 2 alebo ktorí chcú migrovať do Pythonu 3, identifikáciou častí ich zásobníka Python, ktoré musia byť v Pythone 3 prepísané.

Niektorí dodávatelia poskytujú podporu pre Python 2 ako súčasť jeho prítomnosti v inom podporovanom produkte. Red Hat Enterprise Linux verzie 6 a 7 obsahuje Python 2, takže všetky zmluvy o podpore zakúpené od Red Hat pre tieto verzie OS budú obsahovať nepretržitú podporu pre Python 2 po celú dobu životnosti produktu.

Ak používate Python 2 prostredníctvom cloudovej služby, je tu šanca, že služba bude naďalej svojim spôsobom podporovať Python 2. Napríklad AWS uviedla, že poskytne bezpečnostné záplaty pre svoj runtime Python 2.7 do 31. decembra 2020, aj keď to neplatí pre akékoľvek balíčky Python 2.7 tretích strán.

Treťou možnosťou je nákup podpory od poradenskej firmy alebo dodávateľa. Úroveň podpory, ktorú vám poskytujú, by sa líšila v závislosti od vašich potrieb a ambícií. Mohlo by to spočívať v vymyslení plánu prechodu na odklon od Pythonu 2 a prepísaní ľubovoľného závislého softvéru (pravdepodobne najlepšej dlhodobej stratégie) alebo v ručnom zlúčení opráv pre Python 2 do prispôsobeného zostavenia runtime (ambiciózne a komplexné ).

Udržujte si Python 2 sami

Python je projekt s otvoreným zdrojom. Nič vám nebráni v tom, aby ste sami vykonali potrebné opravy. Ak je opravou zmena štandardnej knižnice Pythonu, zvyčajne to nie je príliš náročné, pretože väčšina štandardnej knižnice Pythonu je sama napísaná v Pythone. Ale ak potrebujete urobiť zmeny v C module používanom Pythonom v štandardnej knižnici, alebo v CPython tlmočníkovi, bolo by to náročnejšie. Aby ste to dosiahli, musíte poznať C a byť oboznámení s vnútornými súčasťami CPython.

Nerob nič

Ak to nie je zlomené, neopravujte to. To je stratégia, ktorú mnoho firiem používalo so systémami Windows NT a Windows 2000, keď tieto operačné systémy skončili svoju životnosť. Aplikácie Pythonu, ktoré sú určené iba na interné použitie a ktoré nie sú vystavené verejnému internetu, by sa teoreticky mohli spúšťať na neurčito.

Virtuálne stroje a kontajnerizácia poskytujú spôsoby, ako udržať tieto druhy aplikácií nažive a dobre v kontrolovanom prostredí. Dané vydanie runtime Pythonu 2 môžete „zmraziť“ na image kontajnera alebo VM spolu s jeho štandardnou knižnicou, modulmi potrebnými pre vašu aplikáciu a samotnou aplikáciou.

To znamená, že každú starú aplikáciu, aj tú, ktorá nie je vystavená vonkajšiemu prostrediu, treba pravidelne prehodnocovať. V každom prípade je najlepšou dlhodobou stratégiou pre používateľov Pythonu 2 migrácia na Python 3. Python 2, tak dobrý, ako bol, je niečo, čím sa musíte pohnúť.

Prečítajte si viac o Pythone

  • Čo je to Python? Výkonné a intuitívne programovanie
  • Čo je to PyPy? Rýchlejší Python bez bolesti
  • Čo je to Cython? Python rýchlosťou C
  • Výukový program pre Cython: Ako zrýchliť Python
  • Ako inteligentne nainštalovať Python
  • Najlepšie nové funkcie v Pythone 3.8
  • Lepšie riadenie projektov v Pythone s Poetry
  • Virtualenv a venv: Vysvetlenie virtuálnych prostredí Pythonu
  • Python virtualenv a venv robí a nerobí
  • Vysvetlenie vlákien a podprocesov v jazyku Python
  • Ako používať debugger Pythonu
  • Ako používať timeit na profilovanie kódu Pythonu
  • Ako používať cProfile na profilovanie kódu Pythonu
  • Začnite s asynchronizáciou v Pythone
  • Ako používať asyncio v Pythone
  • Ako previesť Python na JavaScript (a späť)
  • Python 2 EOL: Ako prežiť koniec Pythonu 2
  • 12 pytónov pre každú potrebu programovania
  • 24 knižníc Pythonu pre každého vývojára Pythonu
  • Sedem sladkých IDE Pythonu, ktoré vám mohli chýbať
  • 3 hlavné nedostatky Pythonu - a ich riešenia
  • 13 porovnávaných webových rámcov Pythonu
  • 4 testovacie rámce Pythonu na rozdrvenie vašich chýb
  • 6 skvelých nových funkcií Pythonu, ktoré vám určite nebudú chýbať
  • 5 distribúcií Pythonu na zvládnutie strojového učenia
  • 8 skvelých knižníc Pythonu na spracovanie prirodzeného jazyka
$config[zx-auto] not found$config[zx-overlay] not found