-
Evitar que Python cree carpetas __pycache__
Python compila los archivos .py a bytecode y los guarda en __pycache__ para reutilizarlos en futuras ejecuciones. Esto mejora el rendimiento, pero también ensucia el árbol de directorios, algo especialmente incómodo en:
- Contenedores y despliegues reproducibles.
- Entornos con volúmenes de solo lectura.
- Proyectos donde queremos mantener el árbol de archivos limpio.
Cuando trabajamos con proyectos en producción, contenedores o entornos donde no queremos archivos generados automáticamente, las carpetas __pycache__ pueden resultar molestas. En este hack detallamos varias formas sencillas y seguras de evitar que Python cree estas carpetas, sin romper el entorno ni modificar el comportamiento del código.
DESACTIVAR USANDO UNA VARIABLE DE ENTORNO
La forma más directa es usar la variable de entorno PYTHONDONTWRITEBYTECODE. De este modo, Python no generará archivos .pyc ni carpetas __pycache__.
PYTHONDONTWRITEBYTECODE=1 python3 main.py
Si queremos que se aplique a toda la sesión:
export PYTHONDONTWRITEBYTECODE=1 python3 main.py
Esta es la opción recomendada para entornos de producción o scripts de arranque.
DESACTIVAR DESDE EL PROPIO CÓDIGO
También podemos indicarle a Python que no escriba bytecode desde el propio programa. Basta con añadir esta línea al inicio del archivo principal:
import sys sys.dont_write_bytecode = True
Esta opción es útil si lanzamos procesos hijos o si no controlamos cómo se ejecuta el script desde fuera.
PONIENDO LA VARIABLE EN EL SHEBANG
Si ejecutamos nuestros scripts directamente y usamos shebang, podemos integrarlo ahí:
#!/usr/bin/env -S PYTHONDONTWRITEBYTECODE=1 python3
De esta forma, cada vez que ejecutemos el archivo, Python se comportará como si la variable de entorno estuviera definida.
ELIMINAR LAS CARPETAS EXISTENTES
Si ya se han creado carpetas __pycache__, podemos limpiarlas fácilmente posicionándonos en la carpeta que queramos limpiar y ejeccutando el siguiente comando:
find . -type d -name "__pycache__" -exec rm -rf {} +Consideraciones
- Desactivar el bytecode no rompe la ejecución del programa.
- Puede hacer que el primer arranque sea ligeramente más lento.
- Es ideal para contenedores, despliegues automatizados y proyectos donde queremos evitar archivos temporales.
Los hacks de hacks4geeks son minitutoriales rápidos pensados para geeks con conocimiento informático avanzado. Si no entiendes o no consigues ejecutar un hack de esta web considera suscribirte a Premium para solicitar asistencia sobre el mismo.