Programování

Python 2 EOL: Jak přežít konec Pythonu 2

Od 1. ledna 2020 již jeho tvůrci, Python Software Foundation, větev 2.x programovacího jazyka Python nepodporují. Toto datum je vyvrcholením dramatu, které se táhlo roky - přechod od starší, méně schopné a široce používané verze Pythonu k novější a výkonnější verzi, která stále pokračuje v přijetí svého předchůdce.

Je nejvyšší čas. Python 3, s nesčetnými technickými vylepšeními a vylepšeními pro koncové uživatele oproti Pythonu 2, nikdy nebyl v lepší pozici, aby trvale přemístil Python 2. Drtivá většina populárních balíčků hostovaných v úložišti PyPI, což je první zastávka opakovaně použitelného kódu Pythonu, podpora Pythonu 3. Python 3 se stal výchozím překladačem Pythonu pro mnoho distribucí Linuxu. A většina každé nedávné knihy, akademie kódování a online tutoriálu doporučuje Python 3 pro začátečníky.

Nyní špatná zpráva. Python 2, stejně jako Windows 7 (nebo Windows XP!), S námi bude v nadcházejících letech. Mnoho z nás se bude i nadále spoléhat na aplikace napsané v Pythonu 2. Někteří z nás kvůli vnitřním omezením budou i nadále používat Python 2 pro nové aplikace. Co byste měli dělat, pokud narazíte na Python 2 v tom, co se rychle stává světem Pythonu 3? Podívejme se na možnosti.

Konec života v Pythonu 2: Co to znamená

První a nejdůležitější věc, kterou je třeba porozumět tomu, že Python 2 bude EOL (konec života): Aplikace Pythonu 2 budou stále spuštěny. Nepřemýšlejte o tom jako o problému Millennium Bug, kde se aplikace Pythonu 2 magicky zastaví 1. ledna 2020. Už tam nebude nic oficiální podpora pro Python 2 od základního vývojového týmu Pythonu.

V praxi to znamená, co Python 2 EOL znamená:

  • Oficiální opravy chyb a bezpečnostní opravy pro Python 2 přestanou. Tým vývojářů jádra neopraví žádné nově objevené problémy v interpretu Pythonu 2 nebo standardní knihovně Pythonu 2. Komerční prodejci si však mohli Python 2 udržovat sami a další třetí strany mohli rozdělit kódovou základnu Pythonu 2 a pokračovat tam, kde hlavní tým přestal. (Více o tom později.)
  • Projekty Pythonu třetích stran opustí Python 2. Knihovny, které podporovaly Python 2 i Python 3, začnou své zdroje věnovat výhradně Pythonu 3. Mnoho z těchto projektů probíhá dobrovolně a je mnohem méně práce podporovat pouze jednu verzi jazyka. Každý projekt sám rozhodne o podpoře Pythonu 2, ale mnoho velkých projektů v Pythonu se zavazuje, že do roku 2020 zcela zruší podporu Pythonu 2.
  • Podpora platformy pro Python 2 bude klesat. Distribuce Linuxu a poskytovatelé cloudových služeb mohou i nadále zahrnovat runtime Python 2. Ale očekávejte, že podpora pro Python 2 bude časem méně robustní. Téměř jistě bude stále možné provozovat kontejnerovou verzi Pythonu 2 na cloudové platformě, ale neexistuje žádná záruka, že poskytovatelé cloudových služeb budou i nadále udržovat své vlastní kontejnery Pythonu 2.

Pokud narazíte na aplikace Pythonu 2, jak byste se měli vypořádat s absencí podpory Pythonu 2? Nejlepším řešením z dlouhodobého hlediska je najít strategii k odstranění všech vašich závislostí na Pythonu 2. Ale to je jen první z mnoha možností.

Přechod od Pythonu 2

Opuštění Pythonu 2 pro Python 3 může být jednodušší, než očekáváte, v závislosti na velikosti kódové základny a externích závislostech. Oficiální dokumentace Pythonu obsahuje několik přímých kroků, pomocí kterých můžete určit, zda je váš projekt „připravený na budoucnost“ - tj. Lze jej v Pythonu 3 použít s malou nebo žádnou úpravou. Jedním z nejlepších prvních kroků, které můžete podniknout, je použitícaniusepython3 balíček, který zjistí, které komponenty nebo závislosti by migraci blokovaly, pokud existují.

Pokud narazíte na Python 2, protože konkrétní komponenta aplikace funguje pouze na Pythonu 2, začněte přechodem od této komponenty. Zjistěte, zda existuje alternativa kompatibilní s Pythonem 3, a poté aplikaci znovu sestavte. Myšlenkou je hledat nejmenší místa, kde leží závislosti člověka na Pythonu 2, a řešit je.

Thenejmenší můžete udělat, pokud musíte v nějaké formě zůstat na Pythonu 2, začněte migrací na nejnovější verzi Pythonu 2 - Python 2.7.16 od tohoto psaní - a použijte ji jako výchozí bod pro Python 3. Tímto způsobem budete mít prospěch z oprav chyb, které budou k dispozici pro Python 2.7 před jeho oficiálním koncem životnosti.

Použijte alternativní běhový modul Pythonu 2

Pokud změna základny kódu Pythonu 2 není proveditelný návrh, další alternativou je použití jiného běhového prostředí Pythonu 2 vyvinutého třetí stranou. Alternativní běhové prostředí Pythonu 2 může mít delší okno podpory než samotný Python 2.

Tauthon

Tauthon je vidličkou Pythonu 2.7.18 „s novou syntaxí, vestavěnými funkcemi a knihovnami backportovanými z Pythonu 3.x,“ uvádí README projektu. Tauthon také zahrnuje, kdykoli jim správci mohou poskytnout, opravy a opravy jazyka. Teoreticky by měl Tauthon fungovat jako náhrada za Python 2.7. Nejnovější vydání tohoto psaní, Tauthon 2.8.2, obsahuje anotace funkcí, argumenty pouze pro klíčová slova, asynchronní / čekat syntaxe a další funkce dříve dostupné pouze v Pythonu 3.

PyPy

PyPy, zrychlený modul runtime just-in-time pro Python, používá Python 2 jako klíčovou součást své vlastní vnitřní infrastruktury a již dlouho podporuje Python 2 jako svou hlavní verzi. Dokumentace k projektu tvrdí „protože RPython [základ PyPy] je postaven na Pythonu 2 a je velmi nepravděpodobné, že by se změnil, verze PyPy PyPy 2 bude kolem„ navždy “, tj. Pokud bude PyPy sám kolem." PyPy může představovat problémy s kompatibilitou nebo výkonem u některých balíčků Pythonu, které se spoléhají na rozšíření C, ačkoli vývojový tým PyPy neustále pracuje na vyřešení těchto problémů.

IronPython

IronPython, implementace Pythonu pro běh .Net, má verzi Pythonu 2, která stále dostává aktivní podporu. Jeho aktuální seznam vývojářů prohlásil, že pravděpodobně nebude podporovat Python 2 po roce 2020, tím lépe se soustředit na IronPython3. To však neznamená, že by někdo jiný nemohl sám pokračovat v takové podpoře.

Cython

Další možností, i když s omezeným oknem podpory, je také Cython. Cython kompiluje Python do C s volitelným psaním pro vylepšení výkonu a podporuje Python 2 od jeho založení. Je možné použít Cython k převodu kódu Pythonu 2 na C pro další použití jako „zmrazený“ binární soubor. Tímto způsobem můžete dokonce získat zvýšení výkonu v závislosti na povaze aplikace. (Programy, které jsou vázány hlavně na vstupy a výstupy, velké zlepšení neuvidí.)

Cython však plánuje podporu Pythonu 2 zrušit do konce roku. To neznamená, že programy Pythonu 2 se již nebudou kompilovat do Cythonu, pouze bude nutné kompilovat kód Cythonu využívající syntaxi Pythonu 2 pomocí Pythonu 3

Koupit rozšířenou podporu Pythonu 2 od dodavatele

Jedním z dlouhodobých řešení je získání podpory od dodavatele řešení Pythonu. ActiveState, tvůrce distribuce ActivePython a Komodo IDE, nabízí komerční podporu pro zákazníky, kteří chtějí zůstat v Pythonu 2 nebo kteří chtějí migrovat do Pythonu 3, identifikováním částí jejich zásobníku Pythonu, které musí být přepsány v Pythonu 3.

Někteří prodejci poskytují podporu pro Python 2 jako součást jeho přítomnosti v jiném podporovaném produktu. Red Hat Enterprise Linux verze 6 a 7 zahrnuje Python 2, takže všechny smlouvy o podpoře zakoupené od Red Hat pro tyto verze OS budou zahrnovat trvalou podporu pro Python 2 po celou dobu životnosti produktu.

Pokud používáte Python 2 prostřednictvím cloudové služby, existuje šance, že služba bude nadále podporovat Python 2 svým vlastním způsobem. AWS například uvedla, že poskytne bezpečnostní záplaty pro svůj běhový modul Python 2.7 do 31. prosince 2020, i když to neplatí pro žádné balíčky Python 2.7 třetích stran.

Třetí možností je nákup podpory od poradenské firmy nebo dodavatele. Úroveň podpory, kterou vám poskytnou, by se lišila v závislosti na vašich potřebách a ambicích. Mohlo by to spočívat v příchodu plánu přechodu na přechod z Pythonu 2 a přepsání jakéhokoli závislého softwaru (pravděpodobně nejlepší dlouhodobá strategie) nebo v ručním sloučení oprav pro Python 2 do vlastního sestavení běhového prostředí (ambiciózní a komplexní ).

Udržujte Python 2 sami

Python je projekt s otevřeným zdrojovým kódem. Nic vám nebrání v tom, abyste sami provedli potřebné opravy. Pokud je opravou změna standardní knihovny Pythonu, obvykle to není příliš těžké, protože většina standardní knihovny Pythonu je napsána sama v Pythonu. Pokud ale potřebujete provést změny v modulu C používaném Pythonem ve standardní knihovně, nebo v interpretovi CPython, bylo by to náročnější. Abyste toho dosáhli, budete potřebovat znát C a znát vnitřní součásti CPython.

Nedělat nic

Pokud to není rozbité, neopravujte to. To je strategie, kterou mnoho podniků používalo v systémech Windows NT a Windows 2000, když tyto operační systémy skončily. Aplikace v Pythonu, které jsou pouze pro interní použití a které nejsou vystaveny veřejnému internetu, lze teoreticky spouštět na neurčito.

Virtuální stroje a kontejnerizace poskytují způsoby, jak udržet tyto druhy aplikací naživu a dobře v kontrolovaném prostředí. Dané vydání modulu runtime Pythonu 2 můžete „zmrazit“ do image kontejneru nebo virtuálního počítače spolu s jeho standardní knihovnou, moduly potřebnými pro vaši aplikaci a samotnou aplikací.

To znamená, že každá starší aplikace, dokonce i ta, která není vystavena vnějším vlivům, by měla být pravidelně přehodnocována. V každém případě je nejlepší dlouhodobou strategií pro uživatele Pythonu 2 migrace do Pythonu 3. Python 2, ať už je jakkoli skvělý, je něco, čím se musíte pohnout.

Přečtěte si více o Pythonu

  • Co je Python? Výkonné a intuitivní programování
  • Co je PyPy? Rychlejší Python bez bolesti
  • Co je Cython? Python rychlostí C.
  • Výukový program pro Cython: Jak zrychlit Python
  • Jak chytře nainstalovat Python
  • Nejlepší nové funkce v Pythonu 3.8
  • Lepší správa projektů v Pythonu s poezií
  • Virtualenv a venv: Vysvětlení virtuálních prostředí Pythonu
  • Python virtualenv a venv dělá a nedělá
  • Vysvětlení vláken a podprocesů v Pythonu
  • Jak používat debugger Pythonu
  • Jak používat timeit k profilování kódu Pythonu
  • Jak používat cProfile k profilování kódu Pythonu
  • Začněte s asynchronizací v Pythonu
  • Jak používat asyncio v Pythonu
  • Jak převést Python na JavaScript (a zpět)
  • Python 2 EOL: Jak přežít konec Pythonu 2
  • 12 Pythons pro všechny programovací potřeby
  • 24 knihoven Pythonu pro každého vývojáře Pythonu
  • 7 sladkých IDE Pythonu, které vám možná chyběly
  • 3 hlavní nedostatky Pythonu - a jejich řešení
  • Porovnáno 13 webových rámců Pythonu
  • 4 testovací rámce Pythonu k rozdrcení vašich chyb
  • 6 skvělých nových funkcí Pythonu, které si nenechte ujít
  • 5 distribucí Pythonu pro zvládnutí strojového učení
  • 8 skvělých knihoven Pythonu pro zpracování přirozeného jazyka