¿Cómo ejecutar un archivo .pyc (python compilado)?

18

Cuando compilo un archivo de Python, obtengo un archivo * .pyc. Cuando intento ejecutar eso, recibo un mensaje que dice que no hay ningún programa para ejecutarlos. Cuando busco un programa en línea a través de esa opción, dice que no hay ninguno. ¿Alguien puede ayudarme a ejecutar allí los archivos?

Selby Rowley-Cannon
fuente

Respuestas:

24

Como su archivo de Python está compilado en bytes, debe ejecutarlo a través del intérprete de Python

python yourfile.pyc

La razón por la que puede ejecutar sus archivos .py directamente es porque tiene la línea

#!/usr/bin/python

o

#!/usr/bin/env python

o algo similar en la primera línea en los archivos .py. Esto le dice a su shell que ejecute el resto del archivo con el intérprete de Python.

tomodachi
fuente
3
Para complementar esta respuesta: un archivo .pyc no se compila en el sentido más estricto del término, ya que no es un código de máquina nativo. Es, como escribió @tomdachi, un código de bytes específico de Python (muy similar a una clase Java), por eso todavía necesita el intérprete de Python para ejecutar.
Pierre-Antoine
de hecho, el pyc solo se generó cuando importó el archivo py. ¡así que es inútil ejecutar el archivo pyc!
一个 患有 癌 并且 卓越 的 工程师 来 陆家嘴 搞 金融 显然 是 为了 理想 哈哈哈
2

Para descompilar archivos compilados .pyc python3, utilicé uncompyle6en mi sistema operativo Ubuntu actual de la siguiente manera:

  1. Instalación de Unpypy6:

    pip3 install uncompyle6
  2. Para crear un archivo .py a partir del archivo .pyc Ejecute:

    uncompyle6 -o . your_filename.pyc
  3. Automáticamente se creará un nuevo archivo .py con el mismo nombre de archivo .pyc existente.

Dhawaleswar
fuente
-1

Python compila los archivos .py y los guarda como archivos .pyc para que pueda hacer referencia a ellos en invocaciones posteriores. El .pyc contiene el bytecode compilado de los archivos fuente de Python, que es a lo que el intérprete de Python compila la fuente. Este código es ejecutado por la máquina virtual de Python. No hay ningún daño en eliminarlos (.pyc), pero ahorrarán tiempo de compilación si está procesando mucho.

Python es un lenguaje interpretado, a diferencia de uno compilado, aunque la distinción puede ser borrosa debido a la presencia del compilador de bytecode. Compilar generalmente significa convertir a código de máquina, que es lo que se ejecuta más rápido. Pero los intérpretes toman texto legible por humanos y lo ejecutan. Pueden hacer esto con una etapa intermedia.

Por ejemplo, cuando ejecuta el archivo fuente myprog.py, el intérprete de Python primero busca si myprog.pycexiste alguno (que es la versión compilada de código de bytes myprog.py) y si es tan reciente o más reciente que myprog.py. Si es así, el intérprete lo ejecuta. Si no existe, o myprog.pyes más reciente de lo que (lo que significa que ha cambiado el archivo de origen), el intérprete primeras compilaciones myprog.pya myprog.pyc.

Hay una excepción al ejemplo anterior. Si coloca #! /usr/bin/env pythonla primera línea de myprog.py, hágalo ejecutable y luego ejecútelo myprog.pysolo.

Shashank Sai Sangu
fuente
1
Bienvenido a Ask Ubuntu ! Esta es una buena explicación de por qué pycexisten los archivos, pero no ha respondido a la pregunta de cómo ejecutarlos. Puede calificarse como un comentario muy extenso, no como una respuesta . Por favor, editar el post para añadir una respuesta real.
Melebius