Přeskočit na obsah

Převod souboru PYC do PY

Obnovte čitelný zdrojový kód Pythonu z bytecode pomocí decompilers odpovídajících verzi.

Vytvořte soubory PY online

Soubory PYC zatím číst neumíme, takže tenhle převod nenabízíme. Pokud dokážete svou práci uložit do některého z těchto formátů, PY z něj vyrobíme:

Chcete převádět PYC na PY?

Dejte nám vědět. Podle zájmu vybíráme, které převody přidáme jako další.

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

Soubor PY je potřeba, když program, developer nebo archiv obsahuje pouze zkompilovaný Python modul, ale jeho zdrojový kód je nutné prozkoumat nebo upravit. Jedná se o dekompilaci, nikoli o bezeztrátovou konverzi formátu, takže obnovený kód se nemusí shodovat s původním.

Co je formát PYC

Soubory PYC obsahují Python bytecode a serializovaný code object určený ke spuštění Python interpreterem. Python je běžně vytváří při importování nebo kompilaci souboru PY a ukládá je do __pycache__ s názvy jako module.cpython-311.pyc. Nainstalované packages, application deployments a bundled software mohou obsahovat soubory PYC bez odpovídajícího zdrojového kódu.

Soubor PYC má header obsahující metadata interpreteru a cache, po kterém následují marshaled bytecode data. Obvykle nezachovává comments, původní whitespace, quoting, formatting ani přesné uspořádání zdrojového kódu. Mnoho identifiers zůstává v code objectu, ale optimalizace, obfuscation, generovaný kód a detaily kompilace mohou některé informace odstranit nebo změnit.

Co je formát PY

PY je plain-text Python source file určený ke čtení a úpravám. Python interpreters, IDEs, linters, formatters, version-control systems a packaging tools pracují přímo se soubory PY. Na rozdíl od rekonstruovaného výstupu zachovává původní soubor PY developerovy comments, formatting, organizaci zdrojového kódu a obvykle i veškerý source-level intent.

Přejmenování souboru PYC na .py jej nepřevede: výsledkem je stále binary bytecode, který není validním Python source.

Jak dekompilovat soubor PYC

  1. Vytvořte kopii souboru PYC a pracujte s touto kopií. Nespouštějte nedůvěryhodný PYC ani rekonstruovaný script; decompilers a Python imports by se při práci s nedůvěryhodným souborem měly spouštět v izolovaném prostředí.
  2. Určete Python version, která soubor vytvořila. Název jako module.cpython-311.pyc označuje CPython 3.11, ale samostatný filename tuto informaci obsahovat nemusí. Další vodítka může poskytnout producing package, PYC header nebo bytecode magic number.
  3. Nainstalujte decompiler, jehož zdokumentovaná podpora zahrnuje danou bytecode version. Například:
python -m pip install decompyle3
decompyle3 -o recovered path/to/module.pyc

Výstupní directory by měl obsahovat rekonstruované source files. Pokud nainstalovaný command není dostupný v system path, spusťte executable z script directory daného environment.

Pro jinou podporovanou version vyzkoušejte uncompyle6:

python -m pip install uncompyle6
uncompyle6 -o recovered path/to/module.pyc

decompyle3 a uncompyle6 podporují konkrétní rozsahy Python bytecode, nikoli každé aktuální release, proto si před volbou mezi nimi projděte compatibility documentation jednotlivých projektů. pycdc je další local option, pokud jeho release podporuje bytecode version daného souboru:

pycdc path/to/module.pyc > recovered.py

Online services, jako je PyLingual, mohou být užitečné pro nedůvěrné soubory, pokud jejich zveřejněná podpora zahrnuje Python version daného PYC. Nahrání bytecode odešle potenciálně proprietary code třetí straně a může podléhat limitům velikosti, uchovávání nebo zpracování; u důvěrného software použijte local tool a před otevřením nebo spuštěním stažený output ověřte.

Kontrola a oprava obnoveného zdrojového kódu

Otevřete vygenerovaný soubor .py v editoru a zkontrolujte syntax, imports, exception handling, generators, comprehensions, decorators, closures a dynamically generated code. Zkompilujte jej pomocí zamýšleného interpreteru:

python -m py_compile recovered.py

Úspěšná kompilace kontroluje pouze syntax. Před použitím výsledku jako replacement source spusťte relevantní tests a porovnejte chování s původní application. Decompiler může vytvořit code, který vypadá validně, ale obsahuje nesprávný control flow nebo postrádá některé detaily.

Kompatibilita a limity obnovení

Bytecode je úzce svázán s Python implementations a releases. PYC vytvořený Pythonem 3.11 nebo 3.12 nemusí fungovat s decompilerem, který podporuje pouze starší bytecode; soubory PYC z Pythonu 2 obecně vyžadují tooling kompatibilní s Pythonem 2. Poškozený, zkrácený, optimalizovaný, obfuscated nebo upravený soubor může vytvořit neúplný output nebo selhat úplně.

Dekompilace nedokáže obnovit comments, původní formatting, nedostupné external modules, package data ani source files, na které code odkazuje. Native extension modules nejsou Python PYC files a vyžadují jiné recovery methods. Původní soubor PY, version-control repository, deployment archive, backup nebo package source představuje jediný spolehlivý způsob, jak získat přesný zdrojový kód.

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

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

Srovnání souborových formátů PYC a PY
Vlastnost .PYC Python compiled 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 Ano Ano
Nejvhodnější pro Vkládání do aplikací Úpravy a postprodukce
Zavedeno 1991 1991
Vývojář Python Software Foundation Python Software Foundation
MIME typ — text/x-python

Informace o příponách a typech souborů poskytuje File-Extensions.org

Často kladené otázky

Lze soubor .pyc převést zpět na soubor .py?

Soubor .pyc lze někdy dekompilovat do přibližného zdrojového kódu .py, ale obvykle jej nelze obnovit přesně. Původní komentáře, formátování a některé podrobnosti na úrovni zdrojového kódu se při kompilaci běžně ztratí.

Bude obnovený kód .py totožný s původním?

Ne, obnovený kód .py je obvykle rekonstrukcí zkompilovaného bytecode, nikoli původním zdrojovým kódem. Názvy a struktura programu mohou být částečně zachovány, ale komentáře, mezery, některé výrazy a další podrobnosti zdrojového kódu mohou být odlišné nebo chybět.

Proč se převod .pyc na .py u některých souborů Pythonu nezdaří?

Často selže, když verze bytecode neodpovídá dekompilátoru nebo když byl soubor optimalizován, obfuskován, poškozen či vytvořen jinou implementací Pythonu. Soubor .pyc také může obsahovat pouze zkompilovaný kód modulu, takže z něj nelze obnovit zdrojové soubory ani strukturu projektu, které v něm nikdy nebyly zahrnuty.

Mohu výsledný soubor .py spustit přesně jako původní?

Často ano, ale ne vždy; obnovený kód může před spuštěním vyžadovat ruční opravy. Bytecode specifický pro danou verzi Pythonu, chybějící externí soubory a ztracené podrobnosti na úrovni zdrojového kódu mohou způsobit syntaktické chyby nebo změnu chování.

Reverzní konverze

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

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

Soubor už byl stažen

Tento soubor už byl stažen. Kvůli ochraně soukromí jsme ho hned po stažení smazali ze serveru, takže ho nejde stáhnout znovu. Pokud ho potřebujete ještě jednou, převeďte soubor znovu.