Waarom PYC naar PY converteren?
De belangrijkste reden is broncodeherstel wanneer de originele .py is verwijderd of nooit is meegeleverd naast de bytecode. Een secundair gebruik is het controleren van programma's die alleen als bytecode worden gedistribueerd. Dit is eerder decompilatie dan een schone formaatconversie - een .pyc slaat gecompileerde bytecode op en de originele brontekst wordt er niet in bewaard.
Hoe PYC naar PY te converteren
decompyle3 FREE
Installeer met pip install decompyle3 en voer decompyle3 uwbestand.pyc > hersteld.py uit. Ondersteunt Python 3.7-3.8.
uncompyle6 FREE
Installeer met pip install uncompyle6 en voer uncompyle6 uwbestand.pyc > hersteld.py uit. Verwerkt Python 2.x tot en met 3.8.
pycdc OPEN-SOURCE
Download het binaire bestand van github.com/zrax/pycdc en voer pycdc uwbestand.pyc > hersteld.py uit. De beste optie voor Python 3.9 en nieuwer, hoewel de nauwkeurigheid op 3.11+ beperkt is.
Over deze formaten
Een .pyc-bestand is gecompileerde Python-bytecode die CPython automatisch buffert om het opstarten te versnellen. Normaal gesproken hoeft u dit niet te openen of aan te raken. Om er een uit…
Open .PYC details →Een .py-bestand is een Python-broncodebestand - platte tekst die een programma of script bevat dat is geschreven in de taal Python. Om de code te lezen, opent u deze in een willekeurige…
Open .PY details →Kwaliteit & waar op te letten
- Commentaren zijn definitief verdwenen - Python-bytecode slaat deze niet op; geen enkele tool kan ze herstellen uit een
.pyc, ongeacht de Python-versie. - De nauwkeurigheid van decompilatie daalt scherp voor Python 3.9 en hoger; pycdc is de best mogelijke optie voor nieuwere bytecode, maar kan onvolledige uitvoer produceren.
- Als de
.pycgeobfusceerd was, zal de decompilatie mislukken of lege uitvoer geven;python3 -m dis uwbestand.pyckan als terugvaloptie nog steeds individuele bytecode-instructies tonen.
Veelgestelde vragen
Hoe weet ik welke Python-versie de .pyc heeft gecompileerd?
.pyc-bestanden in __pycache__ benoemd als module.cpython-311.pyc - het getal geeft de Python-versie aan die het heeft gecompileerd.Blijven docstrings behouden bij decompilatie?
Wat als de decompiler fouten of lege uitvoer produceert?
.pyc is mogelijk geobfusceerd of afkomstig van een niet-ondersteunde Python-versie; probeer een andere tool of gebruik python3 -m dis om individuele bytecode-instructies te inspecteren.