Konverze pyo do py

Převod souboru PYO do PY

Obnovte čitelný zdrojový kód Pythonu z optimalizovaného bytecode starší verze Python 2.

Jak převést soubor pyo do formátu py

Starý software pro Python 2 může poskytovat pouze soubor .pyo, když editor, systém pro kontrolu kódu nebo projekt údržby vyžaduje čitelný zdrojový kód .py. Převod vyžaduje dekompilaci, protože soubor PYO neobsahuje původní zdrojový text.

Co je formát PYO

Soubor PYO je optimalizovaný bytecode Pythonu vytvořený nástrojem Python 2 při spuštění kódu s parametrem -O nebo -OO. Python 2 jej běžně ukládal vedle zdrojového kódu jako module.pyo; Python 3.5 a novější samostatný formát PYO odstranily a optimalizovaný bytecode ukládají jako soubory .pyc s tagy.

Soubory PYO můžete najít v archivovaných aplikacích Pythonu 2, softwaru pro vestavěná zařízení a starých instalačních adresářích obsahujících soubory jako __init__.pyo. PYO je zkompilovaný bytecode pro interpreter Pythonu, nikoli komprimovaná nebo přejmenovaná kopie původního souboru .py.

Co je formát PY

Soubor PY obsahuje zdrojový kód Pythonu v prostém textu, který lze otevřít, upravovat, prohledávat, verzovat a spouštět pomocí kompatibilního interpreteru. Jde o formát očekávaný editory zdrojového kódu, repozitáři kódu, nástroji pro linting a většinou vývojových nástrojů.

Dekompilace může znovu vytvořit kód Pythonu vypadající jako spustitelný, ale obvykle nedokáže obnovit komentáře, původní mezery, komentáře s kódováním zdrojového kódu, přesné formátování ani konstrukce zdrojového kódu odstraněné během kompilace. Mnoho názvů zůstává v bytecode, ale není zaručeno, že odpovídají názvům zamýšleným autorem.

Jak převést PYO na PY

  1. Určete verzi bytecode. Přípona .pyo obvykle označuje Python 2, ale bytecode Pythonu 2.5, 2.6 a 2.7 se liší. Verzi určete z hlavičky souboru pomocí okolní aplikace, její dokumentace nebo nástroje pro kontrolu bytecode. Dekompilátor musí tuto verzi podporovat.
  2. Zachovejte originál. Pracujte s kopií a nespouštějte nedůvěryhodný soubor PYO. Pokud soubor obsahuje proprietární kód, bez oprávnění jej nenahrávejte do služby třetí strany.
  3. Nainstalujte lokální dekompilátor. uncompyle6 je běžně používaná open-source možnost pro bytecode Pythonu; nainstalujte jej v izolovaném prostředí pomocí python -m pip install uncompyle6. Další lokální možností je pycdc sestavený z jeho oficiálního repozitáře. Před výběrem si ověřte podporované verze bytecode v jednotlivých projektech.
  4. Spusťte dekompilátor. Například uncompyle6 -o recovered module.pyo zapíše obnovené soubory do adresáře recovered. Některá vydání nebo wrappery mohou příponu .pyo odmítnout, přestože soubor obsahuje standardní bytecode Pythonu 2. V takovém případě jej zkopírujte do module.pyc a akci zopakujte; přejmenování změní pouze název souboru, nikoli bytecode.
  5. V případě potřeby zachyťte standardní výstup. Pokud nástroj vypisuje zdrojový kód místo vytvoření souboru, použijte uncompyle6 module.pyo > module.py. Výsledek zkontrolujte, než nahradíte jakýkoli existující zdrojový kód.
  6. Ověřte výsledek pomocí odpovídajícího interpreteru. Nejprve zkontrolujte výstup Pythonu 2 pomocí vhodného interpreteru Pythonu 2, například python2 recovered/module.py, v kontrolovaném prostředí. Chyby dekompilátoru opravte ručně a poté kód podle potřeby převeďte do Pythonu 3 pomocí nástrojů, jako je 2to3; automatický převod nenahrazuje testování.

Žádné běžné přejmenování, rozbalení archivu ani export textu nepřevede PYO na zdrojový kód. Důvěryhodné online konvertory obecně nejsou pro tento formát praktickým doporučením: podpora závisí na přesné verzi bytecode Pythonu a nahráním proprietárního softwaru vystavujete jeho kód. Lokální dekompilátor je bezpečnější a obvykle spolehlivější.

Omezení kvality a kompatibility

Dekompilace je aproximace. Komentáře, formátování, syntaxe používaná pouze ve zdrojovém kódu a část původní struktury se ztratí. Kompilace Pythonu 2 s parametrem -O odstraňuje příkazy assertion; -OO odstraňuje také docstringy. Obnovený soubor se proto může lišit v chování nebo dokumentaci, i když se spustí.

Zkontrolujte odsazení, zpracování výjimek, generátory, dekorátory, kódování řetězců, importy a řídicí tok. Dekompilátor může vytvářet syntaktické chyby nebo nenápadně nesprávný kód, pokud plně nepodporuje danou verzi bytecode nebo konkrétní konstrukci kompilátoru.

Soubor PYO může také záviset na modulech balíčků, datových souborech, nativních rozšířeních, proměnných prostředí a konkrétním pracovním adresáři. Úspěšný převod vytvoří zdrojový text, nikoli samostatnou náhradní aplikaci.

PYO vs PY: srovnání formátů

Jak si formáty PYO a PY stojí v nejdůležitějších vlastnostech pro tento převod.

Srovnání souborových formátů PYO a PY
Vlastnost .PYO Python Optimized Bytecode .PY Python source file
Čitelný jako prostý text Ne Ano
Formátování textu Žádné Základní
Obrázky Ne Ne
Další úpravy Nelze přímo upravovat Snadné
Otevírá se ve webovém prohlížeči Ne Ne
Typická velikost souboru Velmi malé Malé
Otevřený standard Ne Ano
Nejvhodnější pro Vkládání do aplikací Úpravy a postprodukce
Zavedeno — 1991
Vývojář Python Software Foundation Python Software Foundation
MIME typ — text/x-python

Databáze v současné době neobsahuje žádný program na konverzi souborů pyo.

Reverzní konverze

Konverze do .py
z jiných formátů

Sdílejte na sociálních sítích: