.PYO

Archivo PYO

Python Optimized Bytecode File (legacy)
Hacer una pregunta
RESPUESTA RÁPIDA

Un archivo .pyo es un caché de bytecode optimizado de Python legado, generado al ejecutar Python con el modificador -O o -OO. El formato binario es idéntico al de un archivo .pyc. Python 3.5 eliminó la extensión .pyo en 2015 (PEP 488), por lo que si ve uno hoy en día, proviene de Python 2 o Python 3.0-3.4. Se ejecuta desde la línea de comandos con una versión de Python compatible, o se descompila de nuevo a .py con decompyle3 o uncompyle6.

Desarrollador: Python Software Foundation (CPython) Categoría: Archivos de desarrollo Estándar abierto MIME: application/x-python-code
SE ABRE EN Windows macOS Linux Web
Relacionado: .DO · .MD · .HEX · .XSD

En esta página

19k+ extensiones indexadas
Última revisión Jun 27, 2026

¿No está seguro de qué es su archivo?

Suelte cualquier archivo en nuestro identificador - leemos solo los primeros bytes para nombrar el formato.

Identificar un archivo

¿Qué es el formato de archivo PYO?

Un archivo .pyo es un archivo de bytecode optimizado de Python legado producido por el intérprete CPython cuando se ejecuta con el modificador -O (optimizar) o -OO. Al pasar -O se eliminan las sentencias assert del bytecode compilado; al pasar -OO se eliminan además todas las cadenas de documentación (docstrings), reduciendo ligeramente el tamaño del archivo.

Internamente, los archivos .pyo tienen un formato idéntico byte por byte a los archivos .pyc: un encabezado de 16 bytes (número mágico de 4 bytes específico de la versión, campo de banderas de 4 bytes, marca de tiempo o hash de origen de 4 bytes, tamaño de origen de 4 bytes) seguido de un objeto de código CPython serializado (marshalled). El nivel de optimización se refleja únicamente en el contenido compilado, nunca en el encabezado del archivo.

La extensión .pyo fue declarada obsoleta en Python 3.5 por el PEP 488 (septiembre de 2015) y ya no es generada por ninguna versión actual de Python. A partir de Python 3.5, el bytecode optimizado se almacena dentro de __pycache__ con nombres como module.cpython-311.opt-1.pyc (para -O) o .opt-2.pyc (para -OO). Si encuentra un archivo .pyo hoy en día, se origina a partir de código de Python 2 o Python 3.0-3.4.

Los archivos .pyo no son portables entre versiones de CPython; el número mágico cambia con cada lanzamiento. Herramientas como uncompyle6 (Python 2-3.8) y decompyle3 (Python 3.7-3.11) pueden descompilar archivos .pyo de nuevo a un código fuente .py aproximado, aunque la precisión varía según la versión de Python y la complejidad del código.

Seguridad y protección

RIESGO: MEDIUM

Un archivo .pyo se ejecuta como bytecode de Python con todas las capacidades de un script de Python: acceso al sistema de archivos, red, ejecución de subprocesos. Nunca ejecute un .pyo de una fuente no confiable. El software antivirus a menudo no escanea el contenido de los .pyo. Las aplicaciones maliciosas de Python a veces se distribuyen solo como bytecode (.pyc/.pyo) para dificultar la ingeniería inversa, aunque los descompiladores pueden recuperar gran parte del código fuente.

Detalles del formato

en pocas palabras
NOMBRE COMPLETOPython Optimized Bytecode File (legacy)también conocido como Python compiled optimized file, PYO file
DESARROLLADORPython Software Foundation (CPython)desde Early CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
TIPO MIMEapplication/x-python-code
TIPOBytecode binario de CPython (mismo formato que .pyc; generado con el modificador -O o -OO)
ESTÁNDARAbierto · libre de regalías
RELACIONADO.do.md.hex.xsd

Programas que abren archivos PYO

Windows4 apps
Python (run the file) Código abierto Ejecute «python archivo.pyo» desde el símbolo del sistema (solo Python 2 / 3.0-3.4). En Python 3.5+, cambie el nombre a .pyc primero o use la versión de Python correspondiente.
decompyle3 (decompile to .py) Código abierto Instale con «pip install decompyle3» y luego ejecute «decompyle3 archivo.pyo > archivo.py». Funciona con bytecode de Python 3.7-3.8.
uncompyle6 (decompile Python 2-3.8) Código abierto Instale con «pip install uncompyle6» y luego ejecute «uncompyle6 archivo.pyo > archivo.py». Soporta Python 2.4-3.8.
VS Code (view bytecode with extension) Código abierto Cambie el nombre de .pyo a .pyc, luego use la extensión «Python Disassembler» o «Bytecode Viewer» para inspeccionar los opcodes.
macOS1 app
Python Código abierto Ejecute «python archivo.pyo» con la versión de Python correspondiente. La mayoría de las distribuciones de Linux incluyen Python.
Linux1 app
Python Código abierto Ejecute «python archivo.pyo» con la versión de Python correspondiente. La mayoría de las distribuciones de Linux incluyen Python.
Web1 app
Decompiler.com (online decompile) Gratis Suba el archivo .pyo; el sitio descompila el bytecode de Python (incluyendo .pyo) de nuevo a .py en el navegador.

Detalles técnicos

especificación profunda
Relación de formatoFormato de archivo idéntico byte por byte a `.pyc`; se distingue solo por la extensión del nombre de archivo y el contenido de optimización
Estructura del encabezadoEncabezado de 16 bytes: 4 bytes de magia de versión + 4 bytes de banderas + 4 bytes de mtime o hash de origen + 4 bytes de tamaño de origen
Formato del cuerpoObjeto de código CPython serializado (instrucciones de bytecode, grupo de constantes, nombres, nombres de variables, objetos de código anidados)
Orden de bytesLittle-endian (formato de serialización marshal de CPython)
Nivel de optimización -OElimina las sentencias `assert` del bytecode compilado
Nivel de optimización -OOElimina las sentencias `assert` y todas las cadenas de documentación (docstrings) del bytecode compilado
ObsolescenciaLa extensión `.pyo` fue eliminada en Python 3.5 (PEP 488, septiembre de 2015); no es generada por ninguna versión actual de Python
Equivalente moderno`module.cpython-3X.opt-1.pyc` (nivel 1) o `.opt-2.pyc` (nivel 2) almacenado en `__pycache__`
Portabilidad de versiónNo es portable entre versiones de CPython; el número mágico en los bytes 0-3 cambia con cada lanzamiento principal de CPython
Validación de integridadPython 3.7+ (PEP 552): SipHash opcional de la fuente almacenado en las banderas del encabezado; Python 2 / inicios de 3: solo comparación de mtime
Herramientas de descompilación`uncompyle6` (Python 2-3.8), `decompyle3` (Python 3.7-3.11)
Alcance legadoProducido solo por Python 2 o Python 3.0-3.4; no se encuentra en proyectos que apuntan a Python 3.5 o posterior
LanzadoEarly CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
Última versiónDEPRECATED in Python 3.5 (PEP 488, September 2015) - .pyo extension no longer generated; replaced by .cpython-3X.opt-1.pyc / .opt-2.pyc naming
Estándar abiertoSí · libre de regalías
Especificaciónpeps.python.org

Conversiones de PYO

Preguntas y respuestas de la comunidad

preguntado por usuarios
Hacer una pregunta rápida
Obtenga ayuda de personas que trabajan con archivos PYO. Sea específico: incluya su sistema y la versión del software.
No se necesita cuenta · respuestas generalmente en un día

Aún no hay preguntas; sea el primero en preguntar sobre los archivos PYO.

Preguntas frecuentes

¿Qué es un archivo .pyo?
Un archivo de bytecode optimizado de Python legado: la forma compilada de un script .py creado con los modificadores de optimización -O o -OO de Python. Tiene un formato binario idéntico a .pyc; generado por Python 2 y Python 3.0-3.4. Python 3.5+ ya no crea archivos .pyo.
¿Cómo abro un archivo .pyo?
No se abre directamente: Python lo ejecuta automáticamente. Para leer su contenido, use decompyle3 o uncompyle6 para descompilarlo de nuevo a código fuente .py, o cámbiele el nombre a .pyc y use un desensamblador de bytecode.
¿Puedo eliminar archivos .pyo?
Sí, los archivos .pyo son cachés de bytecode. Python los vuelve a crear si es necesario. Eliminarlos no rompe una instalación o aplicación de Python que funcione (asumiendo que los archivos fuente .py están presentes).
¿Cuál es la diferencia entre .pyo y .pyc?
.pyo se compiló con -O (se eliminan los asserts) o -OO (también se eliminan los docstrings); .pyc se compiló sin optimización. El formato binario es idéntico. Python 3.5+ los fusionó en .opt-1.pyc / .opt-2.pyc.
¿Por qué Python 3.5+ no crea archivos .pyo?
El PEP 488 (2015) eliminó .pyo porque tener dos extensiones para el mismo formato binario resultaba confuso. El nivel de optimización ahora se codifica en el sufijo del nombre de archivo .pyc (.opt-1.pyc, .opt-2.pyc).
¿Cómo descompilo un .pyo para obtener el código fuente de Python?
Use decompyle3 (Python 3.7-3.8) o uncompyle6 (Python 2-3.8): «pip install decompyle3 && decompyle3 archivo.pyo». O súbalo a decompiler.com para una opción basada en web. Los resultados pueden ser imperfectos, especialmente para archivos compilados con -OO que carecen de docstrings.

Referencias

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

Siga explorando

en toda la base de datos

Extensiones principales esta semana

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

Extensiones relacionadas

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

Herramientas de archivo gratuitas

Un identificador de archivos y convertidor de imágenes en el navegador - todo se ejecuta en su dispositivo.

Abrir la caja de herramientas

Explorar extensiones de archivo A-Z