.PYC

File PYC

Compiled Python Bytecode File
Fai una domanda
RISPOSTA RAPIDA

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, usa la versione di Python corrispondente. Per recuperare il codice sorgente da un .pyc, usa un decompilatore come decompyle3 o pycdc - i risultati sono approssimativi e potrebbero fallire sulle versioni di Python più recenti.

Sviluppatore: Python Software Foundation (CPython) Categoria: File di sviluppo Standard aperto MIME: application/x-python-code
SI APRE SU Windows macOS Linux
Correlati: .DO · .MD · .HEX · .XSD

In questa pagina

19k+ estensioni indicizzate
Ultima revisione Jun 30, 2026

Non sei sicuro di cosa sia il tuo file?

Trascina qualsiasi file nel nostro identificatore - leggiamo solo i primi byte per dare un nome al formato.

Identifica un file

Che cos'è il formato di file PYC?

I file .pyc sono utilizzati dal linguaggio di programmazione Python. Un file .pyc è un eseguibile che contiene bytecode compilato per un programma scritto in sorgente Python. Il bytecode è un insieme di istruzioni per l'interprete per eseguire il programma senza dover rianalizzare il sorgente originale a ogni avvio, il che accelera i tempi di importazione e di avvio.

I file .pyc sono accompagnati dai relativi file sorgente .py. Python compila un file .py e salva il risultato in un file .pyc, che può quindi essere utilizzato per eseguire direttamente il programma. A partire da Python 3.2, questi file di cache sono inseriti in una sottodirectory __pycache__ accanto al sorgente, con la versione dell'interprete incorporata nel nome del file (ad esempio, script.cpython-312.pyc).

Ogni file .pyc inizia con un'intestazione di 16 byte. I primi due byte sono un numero magico specifico della versione - cambia con ogni rilascio di CPython - seguito da 0x0D 0x0A (CR LF) ai byte 2-3. I restanti byte dell'intestazione contengono un timestamp e la dimensione del file sorgente (impostazione predefinita) o un hash del file sorgente per build deterministiche e riproducibili, uno schema introdotto dalla PEP 552 in Python 3.7. Dopo l'intestazione, il file contiene un oggetto di codice serializzato (marshalled) che può essere ispezionato con il modulo integrato dis di Python.

Il bytecode .pyc è legato a una versione specifica di CPython - un file compilato con Python 3.11 non verrà caricato con Python 3.12. Il vecchio formato di bytecode ottimizzato .pyo è stato rimosso in Python 3.5; le build ottimizzate ora producono invece file .opt-1.pyc o .opt-2.pyc. Per decompilare un .pyc e tornare a un sorgente leggibile, vengono comunemente usati strumenti come uncompyle6, decompyle3 e pycdc (Decompyle++), sebbene la compatibilità vari in base alla versione di Python. Su Windows, i moduli di estensione compilati utilizzano il formato correlato .pyd.

Sicurezza e incolumità

RISCHIO: MEDIUM

Un .pyc è bytecode che l'interprete Python ESEGUE, quindi un .pyc malevolo può eseguire codice arbitrario proprio come uno script - non eseguire mai un .pyc da una fonte non attendibile. È anche una tecnica comune per nascondere malware (distribuendo solo il bytecode compilato). Al contrario, distribuire il proprio codice come .pyc offre una protezione molto debole: può essere decompilato e, come minimo, disassemblato con il modulo «dis» incluso, quindi NON è un modo reale per mantenere segreto il sorgente. Eliminare i file __pycache__ / .pyc è sicuro - Python li rigenera automaticamente dai sorgenti .py.

Dettagli del formato

in sintesi
NOME COMPLETOCompiled Python Bytecode File
SVILUPPATOREPython Software Foundation (CPython)dal Early CPython (1990s); current header layout (PEP 552 hash-based, deterministic) since Python 3.7, 2018
TIPO MIMEapplication/x-python-code
TIPOBytecode CPython binario (oggetto di codice serializzato con intestazione con versione)
STANDARDAperto · royalty-free

Programmi che aprono file PYC

Windows3 apps
Python (run it) Open-source Eseguilo con la versione di Python CORRISPONDENTE: «python module.pyc». L'interprete esegue direttamente il bytecode - ma la versione deve corrispondere a quella che lo ha compilato.
decompyle3 / uncompyle6 (decompile) Open-source Recupera il sorgente: «pip install decompyle3» poi «decompyle3 file.pyc > file.py». Funziona meglio per Python fino alla ~3.8; i commenti/formattazione vanno persi.
pycdc (Decompyle++) Open-source Per versioni Python più recenti (3.9+) dove uncompyle6 fallisce: compila pycdc ed esegui «pycdc file.pyc». È un tentativo «best-effort»; l'accuratezza sulle ultime versioni è limitata.
macOS2 apps
Python (run it) Open-source Eseguilo con la versione di Python CORRISPONDENTE: «python module.pyc». L'interprete esegue direttamente il bytecode - ma la versione deve corrispondere a quella che lo ha compilato.
uncompyle6 / decompyle3 (decompile) Open-source Installa tramite pip e decompila in .py; valgono le stesse avvertenze sulle versioni di Windows.
Linux2 apps
Python (run it) Open-source Eseguilo con la versione di Python CORRISPONDENTE: «python module.pyc». L'interprete esegue direttamente il bytecode - ma la versione deve corrispondere a quella che lo ha compilato.
decompyle3 / pycdc (decompile) Open-source pip install decompyle3 (o compila pycdc per 3.9+), quindi decompila il .pyc per tornare verso il .py.

Dettagli tecnici

specifiche approfondite
SviluppatorePython Software Foundation (CPython)
Tipo MIMEapplication/x-python-code
Struttura del fileBinario - intestazione con versione di 16 byte seguita da un oggetto di codice Python serializzato (marshalled)
Numero magicoByte 0-1: valore di 2 byte specifico della versione (differisce per ogni rilascio di CPython); byte 2-3: sempre 0x0D 0x0A (CR LF)
Layout intestazioneMagic a 32 bit, flag bit-field a 32 bit, poi mtime a 32 bit + dimensione sorgente a 32 bit (modalità timestamp) o un hash del sorgente a 32 bit (modalità hash PEP 552)
Directory cacheMemorizzato in __pycache__/ da Python 3.2; il nome del file codifica la versione dell'interprete, es. script.cpython-312.pyc
Compatibilità versioneOgni versione di CPython scrive un numero magico univoco; un .pyc di Python 3.11 non verrà caricato sotto 3.12 e viceversa
Portabilità della piattaformaIndipendente dalla piattaforma all'interno della stessa versione di CPython - lo stesso .pyc gira su Windows, macOS e Linux con un interprete corrispondente
Varianti ottimizzatepython -O e python -OO producono .opt-1.pyc e .opt-2.pyc (rimuovono assert e docstring); l'estensione .pyo è stata ritirata in Python 3.5
Controllo auto-generazioneCPython scrive i file .pyc automaticamente all'importazione; soppresso dal flag -B o dalla variabile d'ambiente PYTHONDONTWRITEBYTECODE=1
Disassemblaggio / decompilazioneIl modulo integrato dis di Python disassembla il bytecode; strumenti di terze parti uncompyle6, decompyle3 e pycdc (Decompyle++) tentano la ricostruzione del sorgente
Formato di serializzazione internaGli oggetti di codice sono serializzati con il modulo marshal - un formato binario compatto distinto da pickle, non facente parte dell'API pubblica stabile
Build basate su hashLa PEP 552 (Python 3.7+) ha introdotto i file .pyc basati su hash: l'intestazione memorizza un hash del file sorgente invece di mtime per build riproducibili
RilasciatoEarly CPython (1990s); current header layout (PEP 552 hash-based, deterministic) since Python 3.7, 2018
Standard aperto · royalty-free
Specificadocs.python.org

Conversioni PYC

Domande e risposte della community

chiesto dagli utenti
Fai una domanda veloce
Ottieni aiuto da persone che lavorano con i file PYC. Sii specifico - includi il tuo sistema e la versione del software.
Nessun account necessario · risposte solitamente entro un giorno

Ancora nessuna domanda - sii il primo a chiedere informazioni sui file PYC.

Domande frequenti

Cos'è un file .pyc e posso eliminarlo?
È bytecode Python compilato che Python memorizza nella cache per avviarsi più velocemente. Puoi eliminare in sicurezza i file .pyc e le cartelle __pycache__ - Python li ricreerà dal sorgente .py alla successiva esecuzione.
Come posso convertire un .pyc in sorgente .py?
Decompilandolo. Usa decompyle3 o uncompyle6 per Python fino alla versione 3.8 («decompyle3 file.pyc > file.py»), o pycdc per Python 3.9+. I risultati sono approssimativi - i commenti e la formattazione esatta vanno persi - e potrebbero fallire sulle versioni più recenti di Python.
Perché il mio file .pyc non si avvia?
Quasi sempre si tratta di una mancata corrispondenza della versione: un .pyc è legato all'esatta versione di CPython che lo ha creato (il numero magico). Eseguilo con la stessa versione, o prendi il .py originale e lascia che il tuo Python lo ricompili.
Distribuire .pyc invece di .py nasconde il mio codice sorgente?
Solo debolmente. Il .pyc può essere decompilato in Python leggibile e può sempre essere disassemblato con il modulo integrato «dis». Scoraggia la visualizzazione casuale ma non è una vera protezione.
Cosa c'è dentro una cartella __pycache__?
File .pyc memorizzati nella cache con nomi come module.cpython-311.pyc - uno per ogni modulo importato, contrassegnato con la versione di Python. È una cache automatica per le prestazioni ed è sicuro rimuoverla.
Posso eseguire un .pyc senza il file .py?
Sì, se hai la versione di Python corrispondente: «python module.pyc». Il .py è necessario solo per la modifica o affinché Python rigeneri la cache.

Riferimenti

1Python docs - dis (bytecode disassembler)docs.python.org
2PEP 552 - Deterministic pycspeps.python.org

Continua a esplorare

nel database

Migliori estensioni della settimana

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.MDMarkdown Document
4.BINCD/DVD Disc Image (BIN/CUE)
5.PARTPartial Download File
6.RPMSGRestricted Permission Message
7.NOMEDIAAndroid No-Media Marker File
8.EXEWindows Executable (Portable Executable)
9.AVIFAV1 Image File Format (AVIF)
10.ICSiCalendar data file

Estensioni correlate

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

Strumenti file gratuiti

Un identificatore di file e convertitore di immagini nel browser - tutto viene eseguito sul tuo dispositivo.

Apri la cassetta degli attrezzi

Sfoglia le estensioni dei file A-Z