py_compile compila um arquivo; compileall percorre diretórios. Ambos detectam erros de sintaxe sem importar o módulo, o que os torna úteis como verificação rápida antes de testes mais completos.

Exemplo prático

from pathlib import Path
import py_compile

source = Path("example_module.py")
source.write_text("answer = 42\n", encoding="utf-8")
try:
    py_compile.compile(source, doraise=True)
    print("syntax is valid")
finally:
    source.unlink(missing_ok=True)

Falhe de forma explícita

No exemplo, doraise=True transforma a falha em PyCompileError. Na linha de comando, use python -m compileall -q src e confira o código de saída no CI.

O que existe em pycache

Os arquivos .pyc guardam bytecode associado à versão e às regras de invalidação do interpretador. Eles são cache, não fonte de distribuição nem proteção do código.

Limite da verificação

Uma compilação bem-sucedida não detecta nomes ausentes em runtime, tipos incorretos ou falhas de integração. Combine-a com testes e análise estática adequada ao projeto.

Continue estudando

Aprofunde a base com tratamento de erros em Python. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API, as limitações e as diferenças entre versões.