Entendiendo pycache en Python: Todo lo que necesitas saber
Published on
Si alguna vez has ejecutado un script de Python, es posible que hayas notado una carpeta peculiar que se crea en el directorio de tu proyecto. Esta carpeta, llamada __pycache__
, puede parecer misteriosa al principio, pero juega un papel crucial en cómo Python ejecuta tus scripts. Este artículo desmitificará la carpeta __pycache__
, explicando su propósito, cómo funciona y cómo puedes gestionarla de manera efectiva en tus proyectos de Python.
Python es un lenguaje interpretado, lo que significa que convierte tu código fuente en un formato que tu computadora puede entender y ejecutar. Este proceso de conversión puede llevar tiempo, especialmente para scripts más grandes. Para acelerar este proceso, Python guarda el código convertido en una carpeta __pycache__
en forma de archivos .pyc
. Estos archivos son una forma de bytecode que Python puede ejecutar mucho más rápido que el código fuente original.
¿Quieres crear rápidamente visualizaciones de datos desde un dataframe de Python Pandas sin escribir código?
PyGWalker es una biblioteca de Python para análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo tu dataframe de pandas (y dataframe de polars) en una interfaz de usuario estilo Tableau para exploración visual.
¿Qué es pycache en Python?
La carpeta __pycache__
es un directorio que Python crea en tu proyecto cuando ejecutas un script. Esta carpeta contiene archivos .pyc
, que son versiones compiladas de tus scripts de Python. Estos archivos están en un formato llamado bytecode, que es un conjunto de instrucciones de bajo nivel que pueden ser ejecutadas por un intérprete de Python.
Cuando ejecutas un script de Python, el intérprete primero verifica si hay un archivo .pyc
correspondiente en la carpeta __pycache__
. Si existe y el archivo .pyc
está actualizado, Python ejecutará este archivo en lugar del script original. Esto se debe a que la ejecución de bytecode es mucho más rápida que la interpretación del código fuente.
Sin embargo, si el archivo .pyc
está desactualizado (es decir, el script fuente ha sido modificado desde que se creó el archivo .pyc
) o si no hay ningún archivo .pyc
, Python volverá a compilar el script y actualizará o creará el archivo .pyc
en la carpeta __pycache__
.
¿Dónde se encuentra la carpeta pycache?
La carpeta __pycache__
se encuentra en el mismo directorio que el script de Python que se está ejecutando. Por ejemplo, si tienes un script llamado main.py
en un directorio llamado mi_proyecto
, al ejecutar main.py
se creará una carpeta __pycache__
en el directorio mi_proyecto
.
Dentro de la carpeta __pycache__
, encontrarás archivos .pyc
correspondientes a cada script de Python que se haya ejecutado en el directorio principal. Los nombres de estos archivos coinciden con los nombres de los scripts originales, pero con una extensión .pyc
en lugar de .py
.
¿Cómo acelera pycache la ejecución de los scripts de Python?
La carpeta __pycache__
y sus archivos .pyc
ayudan a acelerar la ejecución de los scripts de Python almacenando bytecode, que es una versión precompilada de tu script. El bytecode es más rápido para que Python lo ejecute que el código fuente original, ya que es un formato de nivel inferior que está más cerca del código de máquina.
Cuando ejecutas un script de Python, el intérprete tiene que analizar el código fuente, convertirlo en un árbol de sintaxis abstracta (AST) y luego compilar este AST en bytecode. Este proceso puede llevar tiempo, especialmente para scripts más grandes.
## ¿Puedo eliminar la carpeta pycache?
Sí, puedes eliminar la carpeta __pycache__
. Eliminar esta carpeta no afectará la ejecución de tus scripts de Python. Sin embargo, la próxima vez que ejecutes tus scripts, Python tendrá que recompilarlos en bytecode, lo que podría ralentizar ligeramente la ejecución inicial. Esto se debe a que Python necesitará recrear la carpeta __pycache__
y los archivos .pyc
que contiene.
Si te preocupa que la carpeta __pycache__
llene tu directorio de proyecto, puedes utilizar un comando sencillo para eliminar todas las carpetas __pycache__
de forma recursiva. Así es cómo puedes hacerlo:
find . -type d -name __pycache__ -exec rm -r {} \+
Este comando encontrará todos los directorios llamados __pycache__
en el directorio actual y sus subdirectorios y los eliminará.
¿Cómo deshabilitar la creación de archivos pycache en Python?
Si bien la carpeta __pycache__
y sus archivos .pyc
pueden ayudar a acelerar la ejecución de tus scripts de Python, puede haber situaciones en las que desees deshabilitar su creación. Por ejemplo, es posible que estés trabajando en un script pequeño donde el tiempo de compilación es insignificante o que desees evitar llenar tu directorio de proyecto con carpetas __pycache__
.
Puedes deshabilitar la creación de carpetas __pycache__
y archivos .pyc
estableciendo la variable de entorno PYTHONDONTWRITEBYTECODE
. Puedes hacerlo directamente en tu terminal con el siguiente comando:
export PYTHONDONTWRITEBYTECODE=1
Después de ejecutar este comando, Python ya no creará carpetas __pycache__
ni archivos .pyc
hasta el final de la sesión actual de tu terminal. Si deseas hacer este cambio permanente, puedes agregar la línea anterior a tu archivo de inicio de tu shell (por ejemplo, ~/.bashrc
o ~/.bash_profile
para el shell Bash).
¿Cómo ignorar los archivos pycache en Git?
Cuando trabajas con Git, es común ignorar ciertos archivos o directorios que no necesitan ser controlados por versiones. El directorio __pycache__
es un candidato principal para esto, ya que contiene bytecode compilado que es específico de la máquina y no necesita ser compartido entre diferentes entornos.
Para ignorar los directorios __pycache__
en Git, puedes agregar una línea a tu archivo .gitignore
:
__pycache__/
Esta línea le indica a Git que ignore todos los directorios __pycache__
, sin importar dónde se encuentren en tu proyecto. Ahora, cuando ejecutes git status
, verás que los directorios __pycache__
y sus contenidos ya no aparecerán como archivos no rastreados.
¿Qué sucede si borro la carpeta pycache?
Borrar la carpeta __pycache__
no afectará la ejecución de tus scripts de Python. La carpeta __pycache__
no es necesaria para ejecutar scripts de Python; simplemente ayuda a acelerar la ejecución de scripts que se han ejecutado previamente.
Cuando borras la carpeta __pycache__
y luego ejecutas un script de Python, Python volverá a compilar el script en bytecode y recreará la carpeta __pycache__
y el archivo .pyc
correspondiente. Este proceso puede ralentizar ligeramente la ejecución inicial del script, pero las ejecuciones posteriores serán más rápidas, ya que Python puede utilizar el bytecode almacenado en el archivo .pyc
.
Ahora, respondamos algunas preguntas frecuentes sobre __pycache__
en Python.
Preguntas frecuentes
- ¿Cuál es el propósito de la carpeta
__pycache__
en Python?
La carpeta __pycache__
es creada por Python cuando ejecutas un script. Contiene archivos .pyc
, que son versiones compiladas de tus scripts de Python. Estos archivos están en un formato llamado bytecode, que Python puede ejecutar más rápido que el código fuente original.
- ¿Puedo borrar la carpeta
__pycache__
?
Sí, puedes borrar la carpeta __pycache__
. Borrar esta carpeta no afectará la ejecución de tus scripts de Python. Sin embargo, la próxima vez que ejecutes tus scripts, Python deberá recompilarlos en bytecode, lo que puede ralentizar ligeramente la ejecución inicial.
- ¿Cómo puedo ignorar los archivos
__pycache__
en Git?
Para ignorar los directorios __pycache__
en Git, puedes agregar la siguiente línea a tu archivo .gitignore
: __pycache__/
. Esto le indica a Git que ignore todos los directorios __pycache__
, sin importar dónde se encuentren en tu proyecto.