.PYO

File PYO

Python Optimized Bytecode File (legacy)
Fai una domanda
RISPOSTA RAPIDA

Un file .pyo è una cache di bytecode ottimizzata di Python (legacy) generata eseguendo Python con il flag -O o -OO. Il formato binario è identico a un file .pyc. Python 3.5 ha eliminato l'estensione .pyo nel 2015 (PEP 488), quindi se ne vedi uno oggi proviene da Python 2 o Python 3.0-3.4. Puoi eseguirlo dalla riga di comando con una versione di Python corrispondente, oppure decompilarlo in .py con decompyle3 o uncompyle6.

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

In questa pagina

19k+ estensioni indicizzate
Ultima revisione Jun 27, 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 PYO?

Un file .pyo è un file di bytecode ottimizzato Python legacy prodotto dall'interprete CPython quando viene eseguito con il flag -O (ottimizza) o -OO. Passando -O vengono rimosse le istruzioni assert dal bytecode compilato; passando -OO vengono rimosse inoltre tutte le docstring, riducendo leggermente le dimensioni del file.

Internamente, i file .pyo sono identici byte per byte nel formato ai file .pyc: un'intestazione di 16 byte (numero magico specifico della versione di 4 byte, campo flag di 4 byte, timestamp o hash sorgente di 4 byte, dimensione sorgente di 4 byte) seguita da un oggetto codice CPython serializzato (marshalled). Il livello di ottimizzazione si riflette solo nel contenuto compilato - mai nell'intestazione del file.

L'estensione .pyo è stata deprecata in Python 3.5 dalla PEP 488 (settembre 2015) e non viene più generata da alcuna versione corrente di Python. Da Python 3.5 in poi, il bytecode ottimizzato viene memorizzato all'interno di __pycache__ con nomi come module.cpython-311.opt-1.pyc (per -O) o .opt-2.pyc (per -OO). Se incontri un file .pyo oggi, esso ha origine da codice Python 2 o Python 3.0-3.4.

I file .pyo non sono portabili tra le versioni di CPython - il numero magico cambia con ogni rilascio. Strumenti come uncompyle6 (Python 2-3.8) e decompyle3 (Python 3.7-3.11) possono decompilare i file .pyo riportandoli a un codice sorgente .py approssimativo, sebbene l'accuratezza vari in base alla versione di Python e alla complessità del codice.

Sicurezza e incolumità

RISCHIO: MEDIUM

Un file .pyo viene eseguito come bytecode Python con tutte le capacità di uno script Python - accesso al file system, rete, esecuzione di sottoprocessi. Non eseguire mai un .pyo da una fonte non attendibile. I software antivirus spesso non scansionano il contenuto dei .pyo. Le app Python malevole sono talvolta distribuite solo come bytecode (.pyc/.pyo) per rendere più difficile il reverse engineering, sebbene i decompilatori possano recuperare gran parte del sorgente.

Dettagli del formato

in sintesi
NOME COMPLETOPython Optimized Bytecode File (legacy)anche noto come Python compiled optimized file, PYO file
SVILUPPATOREPython Software Foundation (CPython)dal Early CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
TIPO MIMEapplication/x-python-code
TIPOBytecode binario CPython (stesso formato di .pyc; generato con flag -O o -OO)
STANDARDAperto · royalty-free

Programmi che aprono file PYO

Windows4 apps
Python (run the file) Open-source Esegui «python file.pyo» dal prompt dei comandi (solo Python 2 / 3.0-3.4). Su Python 3.5+ rinominalo prima in .pyc o usa la versione di Python corrispondente.
decompyle3 (decompile to .py) Open-source pip install decompyle3 quindi «decompyle3 file.pyo > file.py». Funziona su bytecode Python 3.7-3.8.
uncompyle6 (decompile Python 2-3.8) Open-source pip install uncompyle6 quindi «uncompyle6 file.pyo > file.py». Supporta Python 2.4-3.8.
VS Code (view bytecode with extension) Open-source Rinomina .pyo in .pyc, quindi usa l'estensione «Python Disassembler» o «Bytecode Viewer» per ispezionare gli opcode.
macOS1 app
Python Open-source Esegui «python file.pyo» con la versione di Python corrispondente. La maggior parte delle distribuzioni Linux include Python.
Linux1 app
Python Open-source Esegui «python file.pyo» con la versione di Python corrispondente. La maggior parte delle distribuzioni Linux include Python.
Web1 app
Decompiler.com (online decompile) Gratuito Carica il file .pyo; il sito decompila il bytecode Python (incluso .pyo) riportandolo a .py nel browser.

Dettagli tecnici

specifiche approfondite
Relazione tra formatiFormato file identico byte per byte a `.pyc`; distinto solo dall'estensione del nome file e dal contenuto dell'ottimizzazione
Struttura intestazioneIntestazione di 16 byte: magic di versione a 4 byte + flag a 4 byte + mtime o hash sorgente a 4 byte + dimensione sorgente a 4 byte
Formato del corpoOggetto codice CPython serializzato (istruzioni bytecode, pool di costanti, nomi, nomi variabili, oggetti codice annidati)
Ordine dei byteLittle-endian (formato di serializzazione marshal di CPython)
Livello di ottimizzazione -ORimuove le istruzioni `assert` dal bytecode compilato
Livello di ottimizzazione -OORimuove le istruzioni `assert` e tutte le docstring dal bytecode compilato
DeprecazioneEstensione `.pyo` eliminata in Python 3.5 (PEP 488, settembre 2015); non generata da alcuna versione corrente di Python
Equivalente moderno`module.cpython-3X.opt-1.pyc` (livello 1) o `.opt-2.pyc` (livello 2) memorizzato in `__pycache__`
Portabilità della versioneNon portabile tra le versioni di CPython; il numero magico nei byte 0-3 cambia con ogni rilascio principale di CPython
Validazione dell'integritàPython 3.7+ (PEP 552): SipHash opzionale del sorgente memorizzato nei flag dell'intestazione; Python 2 / primi 3: solo confronto mtime
Strumenti di decompilazione`uncompyle6` (Python 2-3.8), `decompyle3` (Python 3.7-3.11)
Ambito legacyProdotto solo da Python 2 o Python 3.0-3.4; non riscontrato in progetti destinati a Python 3.5 o versioni successive
RilasciatoEarly CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
Ultima versioneDEPRECATED in Python 3.5 (PEP 488, September 2015) - .pyo extension no longer generated; replaced by .cpython-3X.opt-1.pyc / .opt-2.pyc naming
Standard aperto · royalty-free
Specificapeps.python.org

Conversioni PYO

Domande e risposte della community

chiesto dagli utenti
Fai una domanda veloce
Ottieni aiuto da persone che lavorano con i file PYO. 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 PYO.

Domande frequenti

Cos'è un file .pyo?
Un file di bytecode ottimizzato Python legacy - la forma compilata di uno script .py creata con il flag di ottimizzazione -O o -OO di Python. Formato binario identico a .pyc; generato da Python 2 e Python 3.0-3.4. Python 3.5+ non crea più file .pyo.
Come si apre un file .pyo?
Non si apre direttamente - Python lo esegue automaticamente. Per leggerne il contenuto, usa decompyle3 o uncompyle6 per decompilarlo nel codice sorgente .py originale, oppure rinominalo in .pyc e usa un disassemblatore di bytecode.
Posso eliminare i file .pyo?
Sì - i file .pyo sono cache di bytecode. Python li ricrea se necessario. Eliminarli non compromette un'installazione di Python o un'app funzionante (presupponendo che i file sorgente .py siano presenti).
Qual è la differenza tra .pyo e .pyc?
.pyo è stato compilato con -O (assert rimossi) o -OO (anche le docstring rimosse); .pyc è stato compilato senza ottimizzazione. Il formato binario è identico. Python 3.5+ li ha unificati in .opt-1.pyc / .opt-2.pyc.
Perché Python 3.5+ non crea file .pyo?
La PEP 488 (2015) ha eliminato .pyo perché avere due estensioni per lo stesso formato binario creava confusione. Il livello di ottimizzazione è ora codificato nel suffisso del nome file .pyc (.opt-1.pyc, .opt-2.pyc).
Come faccio a decompilare un .pyo per ottenere il sorgente Python?
Usa decompyle3 (Python 3.7-3.8) o uncompyle6 (Python 2-3.8): «pip install decompyle3 && decompyle3 file.pyo». Oppure caricalo su decompiler.com per un'opzione basata sul web. I risultati potrebbero essere imperfetti, specialmente per i file compilati con -OO che mancano delle docstring.

Riferimenti

1PEP 488 - Elimination of PYO filespeps.python.org
2Python Docs - compileall moduledocs.python.org

Continua a esplorare

nel database

Migliori estensioni della settimana

1.AQQAQQ Instant Messenger File
2.BINCD/DVD Disc Image (BIN/CUE)
3.MDMarkdown Document
4.RPMSGRestricted Permission Message
5.CRDOWNLOADChrome Partial Download File
6.PARTPartial Download File
7.NOMEDIAAndroid No-Media Marker File
8.EXEWindows Executable (Portable Executable)
9.SWFSmall Web Format (Shockwave Flash)
10.DBSQLite Database 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