.PYO

Fichier PYO

Python Optimized Bytecode File (legacy)
Poser une question
RÉPONSE RAPIDE

Un fichier .pyo est un cache de bytecode Python optimisé hérité, généré en exécutant Python avec l'option -O ou -OO. Le format binaire est identique à celui d'un fichier .pyc. Python 3.5 a supprimé l'extension .pyo en 2015 (PEP 488). Si vous en voyez un aujourd'hui, il provient de Python 2 ou Python 3.0-3.4. Vous pouvez l'exécuter en ligne de commande avec une version correspondante de Python, ou le décompiler en .py avec decompyle3 ou uncompyle6.

Développeur : Python Software Foundation (CPython) Catégorie : Fichiers de développement Standard ouvert MIME: application/x-python-code
S'OUVRE SUR Windows macOS Linux Web
Lié : .DO · .MD · .HEX · .XSD

Sur cette page

19k+ extensions indexées
Dernière révision le Jun 27, 2026

Pas sûr de la nature de votre fichier ?

Déposez n'importe quel fichier dans notre identificateur - nous lisons juste les premiers octets pour nommer le format.

Identifier un fichier

Qu'est-ce que le format de fichier PYO ?

Un fichier .pyo est un fichier de bytecode Python optimisé hérité produit par l'interpréteur CPython lorsqu'il est exécuté avec l'option -O (optimiser) ou -OO. L'utilisation de -O supprime les instructions assert du bytecode compilé ; l'utilisation de -OO supprime en plus toutes les chaînes de documentation (docstrings), réduisant ainsi légèrement la taille du fichier.

En interne, les fichiers .pyo ont un format identique octet par octet aux fichiers .pyc : un en-tête de 16 octets (nombre magique de 4 octets spécifique à la version, champ de drapeaux de 4 octets, horodatage ou hachage source de 4 octets, taille source de 4 octets) suivi d'un objet de code CPython sérialisé (marshalled). Le niveau d'optimisation n'est reflété que dans le contenu compilé - jamais dans l'en-tête du fichier.

L'extension .pyo a été obsolète dans Python 3.5 par la PEP 488 (septembre 2015) et n'est plus générée par aucune version actuelle de Python. À partir de Python 3.5, le bytecode optimisé est stocké dans __pycache__ avec des noms tels que module.cpython-311.opt-1.pyc (pour -O) ou .opt-2.pyc (pour -OO). Si vous rencontrez un fichier .pyo aujourd'hui, il provient de code Python 2 ou Python 3.0-3.4.

Les fichiers .pyo ne sont pas portables entre les versions de CPython - le nombre magique change à chaque version. Des outils tels que uncompyle6 (Python 2-3.8) et decompyle3 (Python 3.7-3.11) peuvent décompiler les fichiers .pyo pour retrouver un code source .py approximatif, bien que la précision varie selon la version de Python et la complexité du code.

Sécurité et sûreté

RISQUE : MEDIUM

Un fichier .pyo s'exécute comme du bytecode Python avec toutes les capacités d'un script Python - accès au système de fichiers, réseau, exécution de sous-processus. N'exécutez jamais un .pyo provenant d'une source non fiable. Les logiciels antivirus ne scannent souvent pas le contenu des .pyo. Les applications Python malveillantes sont parfois distribuées uniquement sous forme de bytecode (.pyc/.pyo) pour rendre l'ingénierie inverse plus difficile, bien que les décompilateurs puissent largement récupérer la source.

Détails du format

en bref
NOM COMPLETPython Optimized Bytecode File (legacy)alias Python compiled optimized file, PYO file
DÉVELOPPEURPython Software Foundation (CPython)depuis Early CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
TYPE MIMEapplication/x-python-code
TYPEBytecode binaire CPython (même format que .pyc ; généré avec l'option -O ou -OO)
STANDARDOuvert · libre de droits

Programmes qui ouvrent les fichiers PYO

Windows4 apps
Python (run the file) Open-source Exécutez « python file.pyo » depuis l'invite de commande (Python 2 / 3.0-3.4 uniquement). Sur Python 3.5+, renommez d'abord en .pyc ou utilisez la version Python correspondante.
decompyle3 (decompile to .py) Open-source pip install decompyle3 puis « decompyle3 file.pyo > file.py ». Fonctionne sur le bytecode Python 3.7-3.8.
uncompyle6 (decompile Python 2-3.8) Open-source pip install uncompyle6 puis « uncompyle6 file.pyo > file.py ». Supporte Python 2.4-3.8.
VS Code (view bytecode with extension) Open-source Renommez .pyo en .pyc, puis utilisez l'extension « Python Disassembler » ou « Bytecode Viewer » pour inspecter les opcodes.
macOS1 app
Python Open-source Exécutez « python file.pyo » avec la version correspondante de Python. La plupart des distributions Linux incluent Python.
Linux1 app
Python Open-source Exécutez « python file.pyo » avec la version correspondante de Python. La plupart des distributions Linux incluent Python.
Web1 app
Decompiler.com (online decompile) Gratuit Téléchargez le fichier .pyo ; le site décompile le bytecode Python (y compris .pyo) en .py directement dans le navigateur.

Détails techniques

spécifications approfondies
Relation de formatFormat de fichier identique octet par octet au `.pyc` ; distingué uniquement par l'extension du nom de fichier et le contenu d'optimisation
Structure de l'en-têteEn-tête de 16 octets : magic de version (4 octets) + drapeaux (4 octets) + mtime ou hachage source (4 octets) + taille source (4 octets)
Format du corpsObjet de code CPython sérialisé (instructions de bytecode, pool de constantes, noms, noms de variables, objets de code imbriqués)
Ordre des octetsLittle-endian (format de sérialisation marshal de CPython)
Niveau d'optimisation -OSupprime les instructions `assert` du bytecode compilé
Niveau d'optimisation -OOSupprime les instructions `assert` et toutes les docstrings du bytecode compilé
ObsolescenceExtension `.pyo` éliminée dans Python 3.5 (PEP 488, septembre 2015) ; non générée par les versions actuelles de Python
Équivalent moderne`module.cpython-3X.opt-1.pyc` (niveau 1) ou `.opt-2.pyc` (niveau 2) stocké dans `__pycache__`
Portabilité de versionNon portable entre les versions de CPython ; le nombre magique dans les octets 0-3 change à chaque version majeure de CPython
Validation d'intégritéPython 3.7+ (PEP 552) : SipHash optionnel de la source stocké dans les drapeaux d'en-tête ; Python 2 / début 3 : comparaison mtime uniquement
Outils de décompilation`uncompyle6` (Python 2-3.8), `decompyle3` (Python 3.7-3.11)
Portée historiqueProduit uniquement par Python 2 ou Python 3.0-3.4 ; non rencontré dans les projets ciblant Python 3.5 ou ultérieur
PubliéEarly CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
Dernière versionDEPRECATED 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 ouvertOui · libre de droits
Spécificationpeps.python.org

Conversions PYO

Q&R de la communauté

posées par les utilisateurs
Poser une question rapide
Obtenez de l'aide de personnes qui travaillent avec des fichiers PYO. Soyez précis - incluez votre système et la version du logiciel.
Aucun compte requis · réponses généralement sous un jour

Pas encore de questions - soyez le premier à poser une question sur les fichiers PYO.

Foire aux questions

Qu'est-ce qu'un fichier .pyo ?
Un fichier de bytecode Python optimisé hérité - la forme compilée d'un script .py créée avec l'option d'optimisation -O ou -OO de Python. Format binaire identique au .pyc ; généré par Python 2 et Python 3.0-3.4. Python 3.5+ ne crée plus de fichiers .pyo.
Comment ouvrir un fichier .pyo ?
Vous ne l'ouvrez pas directement - Python l'exécute automatiquement. Pour lire son contenu, utilisez decompyle3 ou uncompyle6 pour le décompiler en code source .py, ou renommez-le en .pyc et utilisez un désassembleur de bytecode.
Puis-je supprimer les fichiers .pyo ?
Oui - les fichiers .pyo sont des caches de bytecode. Python les recrée si nécessaire. Les supprimer ne casse pas une installation Python ou une application fonctionnelle (en supposant que les fichiers sources .py soient présents).
Quelle est la différence entre .pyo et .pyc ?
Le .pyo a été compilé avec -O (suppression des asserts) ou -OO (suppression des docstrings également) ; le .pyc a été compilé sans optimisation. Le format binaire est identique. Python 3.5+ les a fusionnés en .opt-1.pyc / .opt-2.pyc.
Pourquoi Python 3.5+ ne crée-t-il pas de fichiers .pyo ?
La PEP 488 (2015) a éliminé le .pyo car avoir deux extensions pour le même format binaire était déroutant. Le niveau d'optimisation est désormais encodé dans le suffixe du nom de fichier .pyc (.opt-1.pyc, .opt-2.pyc).
Comment décompiler un .pyo pour obtenir la source Python ?
Utilisez decompyle3 (Python 3.7-3.8) ou uncompyle6 (Python 2-3.8) : « pip install decompyle3 && decompyle3 file.pyo ». Ou téléchargez-le sur decompiler.com pour une option en ligne. Les résultats peuvent être imparfaits, surtout pour les fichiers compilés avec -OO où les docstrings manquent.

Références

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

Continuer l'exploration

à travers la base de données

Top des extensions cette semaine

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.PARTPartial Download File
4.BINCD/DVD Disc Image (BIN/CUE)
5.EXEWindows Executable (Portable Executable)
6.RPMSGRestricted Permission Message
7.MDMarkdown Document
8.DATProgram Data File (generic)
9.NOMEDIAAndroid No-Media Marker File
10.TXTPlain Text File

Extensions liées

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

Outils de fichiers gratuits

Un identificateur de fichier et un convertisseur d'images dans le navigateur - tout s'exécute sur votre appareil.

Ouvrir la boîte à outils

Parcourir les extensions de fichiers A-Z