Perché convertire PYC in PY?
Il motivo principale è il recupero del sorgente quando il .py originale è stato eliminato o mai fornito insieme al bytecode. Un uso secondario è l'analisi di programmi distribuiti solo come bytecode. Si tratta di decompilazione piuttosto che di una pulita conversione di formato - un .pyc memorizza bytecode compilato e il testo sorgente originale non è conservato al suo interno.
Come convertire PYC in PY
decompyle3 FREE
Installa con pip install decompyle3 ed esegui decompyle3 tuo_file.pyc > recuperato.py. Supporta Python 3.7-3.8.
uncompyle6 FREE
Installa con pip install uncompyle6 ed esegui uncompyle6 tuo_file.pyc > recuperato.py. Gestisce Python dalla versione 2.x alla 3.8.
pycdc OPEN-SOURCE
Scarica il binario da github.com/zrax/pycdc ed esegui pycdc tuo_file.pyc > recuperato.py. La migliore opzione per Python 3.9 e successivi, sebbene l'accuratezza su 3.11+ sia limitata.
Informazioni su questi formati
Un file .pyc è bytecode Python compilato che CPython memorizza automaticamente nella cache per velocizzare l'avvio. Normalmente non è necessario aprirlo o modificarlo. Per eseguirne uno,…
Apri dettagli .PYC →Un file .py è un file di codice sorgente Python - testo semplice contenente un programma o uno script scritto nel linguaggio Python. Per leggere il codice, aprilo in qualsiasi editor di…
Apri dettagli .PY →Qualità e a cosa prestare attenzione
- I commenti sono persi permanentemente - il bytecode di Python non li memorizza; nessuno strumento può recuperarli da un
.pycindipendentemente dalla versione di Python. - L'accuratezza della decompilazione cala drasticamente per Python 3.9 e versioni superiori; pycdc è l'opzione migliore per il bytecode più recente, ma potrebbe produrre un output incompleto.
- Se il
.pycè stato offuscato, la decompilazione fallirà o restituirà un output vuoto;python3 -m dis tuo_file.pycpuò comunque mostrare le singole istruzioni del bytecode come soluzione di emergenza.
Domande frequenti
Come faccio a sapere quale versione di Python ha compilato il .pyc?
.pyc in __pycache__ sono nominati come module.cpython-311.pyc - il numero indica la versione di Python che lo ha compilato.Le docstring sopravvivono alla decompilazione?
Cosa succede se il decompilatore produce errori o un output vuoto?
.pyc potrebbe essere offuscato o provenire da una versione di Python non supportata; prova uno strumento diverso o usa python3 -m dis per ispezionare le singole istruzioni del bytecode.