2012-01-11 19 views

Respuesta

343
  1. .py: Este es normalmente el código fuente de entrada que ha escrito.
  2. .pyc: Este es el bytecode compilado. Si importa un módulo, Python compilará un archivo *.pyc que contiene el bytecode para que la importación de nuevo más tarde sea más fácil (y más rápido).
  3. .pyo: Este es un archivo *.pyc que se creó mientras estaban activadas las optimizaciones (-O).
  4. .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 algunos debates sobre .pyc vs .pyo, echar un vistazo a: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (He copiado la parte importante de abajo)

  • Cuando el intérprete de Python se invoca con el - O indicador, el código optimizado se genera y almacena en archivos '.pyo'. El optimizador actualmente no ayuda mucho; solo elimina declaraciones de afirmación. Cuando se usa -O, todo el bytecode está optimizado; Los archivos .pyc se ignoran y los archivos .py se compilan para optimizar bytecode.
  • Pasar dos -O banderas al intérprete de Python (-OO) hará que el compilador de códigos de bytes realice optimizaciones que, en algunos casos excepcionales, podrían dar como resultado un funcionamiento defectuoso de los programas. Actualmente, solo las cadenas __doc__ se eliminan del bytecode, lo que da como resultado archivos '.pyo' más compactos. Dado que algunos programas pueden depender de tenerlos disponibles, solo debe usar esta opción si sabe lo que está 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 con los archivos '.pyc' o '.pyo' es la velocidad con la que se cargan.
  • Cuando se ejecuta una secuencia de comandos dando su nombre en la línea de comandos, el bytecode para la secuencia de comandos nunca se escribe en un archivo '.pyc' o '.pyo'. Por lo tanto, el tiempo de inicio de un script se puede reducir al mover la mayor parte de su código a un módulo y tener 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.
+2

son los archivos DLL generados a partir de secuencias de comandos de Python o C/C++ guiones? –

+1

@yankitwizzy: Sí. Deben generarse a partir del código C/C++. El archivo debe estar en código máquina, por lo que no puede ser directamente desde Python. –

+0

"El optimizador actualmente no ayuda mucho, solo elimina declaraciones de afirmación". ¿Estas seguro acerca de esto? Pruebe '' 'def f (x): assert (x ** 5 == x * x * x * x * x); return x; tiempo de importación; print (timeit.repeat ("para x en el rango (100): f (x)", "de __main__ import f", number = 10000)); '' ' –

155

.py - guiones regulares
.py3 - (poco frecuente) de script python3. guiones python3 por lo general terminan con ".py" no" .py3" , pero he visto un par de veces
.pyc - script compilado (bytecode)
.pyo - optimizados archivo pyc (A partir de python3. 5, Python solo usará pyc en lugar de pyo y pyc)
.pyw - Script de Python para Windows. Se ejecuta con pythonw.exe
.pyx - Cython src que ser convertido a C/C++
.pyd - script Python hecha como
.pxd DLL de Windows - escritura Cython que es equivalente a una C/C++ cabecera
.pxi - MyPy stub
.pyi - archivo de código auxiliar (PEP 484)
.pyz - Python archivo de secuencia de comandos (PEP 441); este es un script que contiene scripts de Python comprimidos (ZIP) en forma binaria después del encabezado de scripts de Python estándar
.pywz - Archivo de scripts de Python para MS-Windows (PEP 441); este es un script que contiene scripts de Python comprimidos (ZIP) en forma binaria después del encabezado de script Python estándar
.py [cod] - notación de comodín en ".gitignore" que significa que el archivo puede ser ".pyc", ". pyo ", o" .pyd ".

Una lista más grande de Python adicional de archivos de extensiones (en su mayoría raras y no oficiales) se puede encontrar en http://dcjtech.info/topic/python-file-extensions/

+11

Debe tenerse en cuenta que un archivo «.pyx» no es una fuente de Python que se convierte en C, sino código fuente de Cython (es decir, esperando a ser convertido a C) –

+3

Lista excelente, tenga en cuenta si la tomo prestada para una presentación Tengo en FreeCodeCamp? –

+2

@DwightSpencer, seguro. –

Cuestiones relacionadas