¿Qué significan las extensiones de archivo de Python, .pyc .pyd .pyo?
¿Qué significan estas extensiones de archivo Python?
.pyc
.pyd
.pyo
¿Cuáles son las diferencias entre ellos y cómo se generan a partir de un archivo *.py?
.py
: Este es normalmente el código fuente de entrada que has escrito..pyc
: Este es el código de bytes compilado. Si importa un módulo, Python creará un*.pyc
archivo que contiene el código de bytes para que importarlo nuevamente más tarde sea más fácil (y más rápido)..pyo
: Este era un formato de archivo utilizado antes de Python 3.5 para*.pyc
archivos creados con-O
el indicador de optimizaciones (). (ver la nota a continuación).pyd
: Esto es básicamente un archivo dll de Windows. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll
También para más discusión sobre .pyc
vs .pyo
, eche un vistazo a: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (he copiado la parte importante a continuación)
- Cuando se invoca al intérprete de Python con el indicador -O, se genera código optimizado y se almacena en archivos '.pyo'. El optimizador actualmente no ayuda mucho; solo elimina declaraciones de afirmación. Cuando se usa -O, se optimiza todo el código de bytes; Los archivos .pyc se ignoran y los archivos .py se compilan en un código de bytes optimizado.
- Pasar dos indicadores -O al intérprete de Python (-OO) hará que el compilador de código de bytes realice optimizaciones que, en algunos casos raros, podrían provocar programas que no funcionen correctamente. Actualmente, solo
__doc__
se eliminan cadenas del código de bytes, lo que da como resultado archivos '.pyo' más compactos. Dado que algunos programas pueden depender de tenerlos disponibles, sólo debes usar esta opción si sabes lo que estás haciendo.- Un programa no se ejecuta más rápido cuando se lee desde un archivo '.pyc' o '.pyo' que cuando se lee desde un archivo '.py'; Lo único que es más rápido en los archivos '.pyc' o '.pyo' es la velocidad con la que se cargan.
- Cuando se ejecuta un script dando su nombre en la línea de comando, el código de bytes del script nunca se escribe en un archivo '.pyc' o '.pyo'. Por lo tanto, el tiempo de inicio de un script se puede reducir moviendo la mayor parte de su código a un módulo y teniendo un pequeño script de arranque que importe ese módulo. También es posible nombrar un archivo '.pyc' o '.pyo' directamente en la línea de comando.
Nota:
El 15 de septiembre de 2015, la versión Python 3.5 implementó PEP-488 y eliminó .pyo
archivos. Esto significa que .pyc
los archivos representan códigos de bytes optimizados y no optimizados.
- .py - Script normal
- .py3 : script Python3 (rara vez usado). Los scripts de Python3 generalmente terminan con ".py", no con ".py3", pero lo he visto varias veces.
- .pyc - script compilado (Bytecode)
- .pyo : archivo pyc optimizado (a partir de Python3.5, Python solo usará pyc en lugar de pyo y pyc)
- .pyw : script de Python para ejecutar en modo ventana, sin consola; ejecutado con pythonw.exe
- .pyx - Cython src se convertirá a C/C++
- .pyd : script de Python creado como una DLL de Windows
- .pxd : encabezado moderno de Cython para usar con
cimport
s. - .pxi : encabezado heredado de Cython para texto sin formato
include
. - .pyi : archivo resguardo ( PEP 484 )
- .pyz : archivo de secuencias de comandos de Python ( PEP 441 ); Este es un script que contiene scripts de Python comprimidos (ZIP) en formato binario después del encabezado del script de Python estándar.
- .pyzw : archivo de script Python para MS-Windows ( PEP 441 ); Este es un script que contiene scripts de Python comprimidos (ZIP) en formato binario después del encabezado del script de Python estándar.
- .py[cod] - notación comodín en ".gitignore" que significa que el archivo puede ser ".pyc", ".pyo" o ".pyd".
- .pth : un archivo de configuración de ruta; su contenido son elementos adicionales (uno por línea) que se agregarán
sys.path
. Versite
módulo. - .egg : zip especial utilizado para distribución/importación, en su mayoría obsoleto desde PEP 427
- .whl : zip especial utilizado únicamente para distribución, ampliamente utilizado por
pip
Puede encontrar una lista más amplia de extensiones de archivos Python adicionales (en su mayoría raras y no oficiales) en http://dcjtech.info/topic/python-file-extensions/
.py
: El código fuente de entrada que ha escrito.
.pyc
: El código de bytes compilado. Si importa un módulo, Python creará un .pyc
archivo que contiene el código de bytes para que importarlo nuevamente más tarde sea más fácil (y más rápido).
.pyo
: Un .pyc
archivo que se creó mientras las optimizaciones (-O) estaban activadas.
.pyd
: Un archivo DLL de Windows para Python.