Python / Package / flake8: instalar y comprobar código Python

Flake8 examina código Python sin ejecutarlo y detecta problemas de estilo y posibles errores, como imports sin utilizar. Instálalo en el entorno del proyecto y ejecuta python -m flake8 archivo.py; las ubicaciones y los códigos indican qué revisar. No comprueba todos los PEP ni corrige el código automáticamente.

Qué comprueba Flake8 y qué significa PEP

PEP significa Python Enhancement Proposal: un documento sobre funciones, procesos o diseños de Python. Dentro del sistema de documentos PEP, PEP 8 se refiere al estilo del código. Una revisión de estilo no equivale a validar todas las propuestas de Python.

Flake8 integra pycodestyle, el análisis estático de Pyflakes y la comprobación de complejidad de mccabe. Esta última necesita un umbral como --max-complexity. Los códigos E y W suelen tratar el estilo; los F proceden de Pyflakes. Los complementos pueden añadir comprobaciones. Flake8 no sustituye a un verificador de tipos ni a las pruebas.

Instalar en un entorno del proyecto

Abre una carpeta de práctica nueva en Windows PowerShell. Debes tener Python y el lanzador py. Si el proyecto ya dispone de un entorno con ese nombre, selecciona su intérprete sin volver a crearlo. Usar directamente el ejecutable evita cambiar la política de ejecución del script de activación.

py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install "flake8==7.4.1"
.\.venv\Scripts\python.exe -m flake8 --version

Flake8 7.4.1 necesita Python 3.10 o posterior. Los comandos y diagnósticos se comprobaron en Windows con Python 3.12.14 y Flake8 7.4.1. Fijar la versión permite reproducir el ejemplo; con otra versión revisa los requisitos y los cambios en las reglas. El último comando muestra las versiones de Flake8 y sus componentes.

En macOS o Linux, crea el entorno con el Python 3 disponible y utiliza .venv/bin/python para pip y Flake8. No copies literalmente la ruta de Windows. La ejecución como módulo ayuda a usar el mismo intérprete para instalar y comprobar.

Interpretar ubicaciones y códigos

Crea bad.py en el proyecto con este código completo y un salto de línea al final de la última línea. Al ejecutarlo con el Python del entorno, muestra 1.

import os
value=1
print(value)
1

Un programa puede funcionar y seguir conteniendo código innecesario o problemas de estilo. Comprueba el mismo archivo desde la carpeta del proyecto:

.\.venv\Scripts\python.exe -m flake8 bad.py
bad.py:1:1: F401 'os' imported but unused
bad.py:2:6: E225 missing whitespace around operator

El formato es archivo:línea:columna: código explicación. F401 indica que el import de os en la línea 1 no se usa. E225 indica que faltan espacios alrededor de la asignación en la línea 2, columna 6. La comprobación termina con código de salida 1 por las infracciones detectadas. Consulta la referencia de diagnósticos y la documentación del componente correspondiente.

Corregir y volver a comprobar

Elimina el import innecesario y añade espacios alrededor del operador. Sustituye todo el contenido del bad.py existente por lo siguiente. La salida del programa sigue siendo 1.

value = 1
print(value)
1

Comprueba otra vez el mismo archivo. --count añade al final la cantidad de infracciones:

.\.venv\Scripts\python.exe -m flake8 --count bad.py
0

El ejemplo corregido tiene cero infracciones y código de salida 0. Sin --count, una comprobación limpia normalmente no muestra diagnósticos. Flake8 no hace estas modificaciones: guarda los cambios en el editor antes de repetir el comando. Revisa por separado la ejecución del programa y su análisis.

Guardar reglas en .flake8

Crea .flake8 en la raíz del proyecto. El contenido es configuración INI, no Python. El límite de 88 caracteres es una política de ejemplo. El máximo predeterminado de Flake8 es 79; seleccionar 88 no cambia las recomendaciones de PEP 8.

[flake8]
max-line-length = 88
extend-exclude = .venv,build,dist

extend-exclude conserva las exclusiones predeterminadas y añade el entorno y las carpetas de compilación. Comprueba que no excluyes fuentes que deban analizarse. Indica expresamente el archivo de configuración:

.\.venv\Scripts\python.exe -m flake8 --config .flake8 --count bad.py
0

El resultado vuelve a ser cero. Cambia el último bad.py por . para analizar el proyecto; otros archivos pueden generar avisos. La documentación de configuración describe la sección [flake8] de .flake8, setup.cfg y tox.ini. Los argumentos de la línea de comandos tienen prioridad, incluidos los del editor o CI.

Excepciones y controles automáticos

Antes de silenciar un aviso, decide si sobra código o existe una excepción justificada. Para una sola línea inevitable, documenta el motivo y limita el código, por ejemplo # noqa: F401. ignore sustituye la lista predeterminada; extend-ignore añade elementos. Revisa el alcance de estas opciones.

En integración continua (CI), conserva el estado de error. --exit-zero comunica éxito incluso con infracciones y no sirve para exigir una revisión correcta. Registra las versiones de Flake8 y sus complementos en las dependencias y revisa los cambios de reglas al actualizar. Un análisis sin avisos no demuestra que sean correctos las entradas, la lógica o el entorno de ejecución; ejecuta también el programa y las pruebas necesarias.