Compile (pero no ejecute) un script de Python [duplicate]

2 minutos de lectura

avatar de usuario
asmeurer

Posible duplicado:

¿Cómo puedo verificar la sintaxis del script de Python sin ejecutarlo?

¿Cómo compilo un script de Python sin ejecutarlo? Solo quiero verificar el script en busca de errores de sintaxis. Esperaba un cambio de línea de comando simple, pero no vi nada en python --help. Me gustaría una respuesta para Python 2 y Python 3.

  • @sukhbir: Tienes razón, pero acabo de darme cuenta de la respuesta y no aparece en ese hilo.

    – Asmeurer

    27 de diciembre de 2010 a las 8:23

  • @asmeurer: Sí lo es, la respuesta que publicaste está en esa pregunta.

    – Falmarri

    27 de diciembre de 2010 a las 8:26

  • La compilación y la verificación de sintaxis son cosas diferentes, en realidad. Desea verificar la sintaxis, la respuesta está en el otro hilo. Tú pedir cómo compilarlo, que es una pregunta diferente, realmente debería cambiar el tema.

    – Lennart Regebro

    27 de diciembre de 2010 a las 8:44


  • @Lennart: ¿Hay alguna forma de verificar la sintaxis sin compilar? Supongo que podría usar algo como pylint, pero en Python la compilación es una operación tan rápida que también podría hacerlo y asegurarse de que todo funcione.

    – Asmeurer

    27 de diciembre de 2010 a las 20:42

  • Usando pylint o pyflakes encontrará más problemas que compilar voluntad.

    – Lennart Regebro

    27 de diciembre de 2010 a las 20:46

python -m py_compile script.py

  • Gracias. esto es genial! y mucho más fácil de recordar que la versión de @Greg Hewgills;)

    – Daren Thomas

    9 de febrero de 2012 a las 14:40

  • Esta debería ser la respuesta aceptada.

    – S. Salmán

    13 de julio de 2016 a las 19:54

  • Exactamente lo que esperaba – gracias

    – Robert Achman

    17 de noviembre de 2017 a las 16:12

  • Puedes ampliar esto con find y xargs para consultar directorios. Aquí se explica cómo ejecutarlo en su src/ dir: find src -type f -name '*.py' | xargs -n1 python3 -m py_compile

    – caja sigilosa

    16 de agosto de 2018 a las 20:58

  • Documentación: docs.python.org/3/using/cmdline.html#using-on-cmdline y docs.python.org/3/library/py_compile.html (En particular, ver la discusión de main().)

    – Alan

    22 de enero de 2019 a las 14:53


avatar de usuario
yurimik

py_compile — Compilar archivos fuente de Python

import py_compile
py_compile.compile('my_script.py')

  • Antes de usar este enfoque, eche un vistazo a la respuesta altamente votada de Mark Johnson para hacer de esta una ejecución de línea de comandos sin python adicional.

    – Daniel Farrell

    29 de agosto de 2018 a las 19:55

avatar de usuario
pafcu

Puedes usar pilinto para encontrar errores de sintaxis, así como errores más sutiles, como acceder a variables indefinidas en alguna rama condicional que se usa raramente.

Una forma es hacer algo como esto (por test.py):

python -c "__import__('compiler').parse(open('test.py').read())"

Esto funciona para Python 2.x.

¿Ha sido útil esta solución?