Entendendo o pycache em Python: Tudo que você precisa saber
Published on
Se você já executou um script Python, pode ter notado uma pasta peculiar que é criada no diretório do seu projeto. Essa pasta, chamada __pycache__
, pode parecer misteriosa no início, mas desempenha um papel crucial na forma como o Python executa seus scripts. Este artigo irá desmistificar a pasta __pycache__
, explicando seu propósito, como ela funciona e como você pode gerenciá-la de forma eficaz em seus projetos Python.
Python é uma linguagem interpretada, o que significa que ela converte seu código fonte em um formato que seu computador possa entender e executar. Esse processo de conversão pode levar algum tempo, especialmente para scripts maiores. Para acelerar esse processo, o Python salva o código convertido em uma pasta __pycache__
na forma de arquivos .pyc
. Esses arquivos são uma forma de bytecode que o Python pode executar muito mais rápido do que o código fonte original.
Quer criar rapidamente visualizações de dados a partir de um DataFrame Pandas Python sem código?
PyGWalker é uma biblioteca Python para Análise Exploratória de Dados com Visualização. PyGWalker (opens in a new tab) pode simplificar sua análise de dados e fluxo de trabalho de visualização de dados no Jupyter Notebook, transformando seu DataFrame pandas (e DataFrame polars) em uma interface de usuário semelhante ao Tableau para exploração visual.
O que é o pycache em Python?
A pasta __pycache__
é um diretório criado pelo Python em seu projeto quando você executa um script. Essa pasta contém arquivos .pyc
, que são versões compiladas de seus scripts Python. Esses arquivos estão em um formato chamado bytecode, que é um conjunto de instruções de baixo nível que podem ser executadas por um interpretador Python.
Quando você executa um script Python, o interpretador verifica primeiro se há um arquivo .pyc
correspondente na pasta __pycache__
. Se houver e o arquivo .pyc
estiver atualizado, o Python executará este arquivo em vez do script original. Isso ocorre porque a execução de bytecode é muito mais rápida do que a interpretação do código fonte.
No entanto, se o arquivo .pyc
estiver desatualizado (ou seja, o script original foi modificado desde a criação do arquivo .pyc
) ou se não houver arquivo .pyc
algum, o Python recompilará o script e atualizará ou criará o arquivo .pyc
na pasta __pycache__
.
Onde está localizada a pasta pycache?
A pasta __pycache__
está localizada no mesmo diretório em que o script Python está sendo executado. Por exemplo, se você tiver um script chamado main.py
em um diretório chamado my_project
, a execução de main.py
criará uma pasta __pycache__
no diretório my_project
.
Dentro da pasta __pycache__
, você encontrará arquivos .pyc
correspondentes a cada script Python que foi executado no diretório pai. Os nomes desses arquivos correspondem aos nomes dos scripts originais, mas com a extensão .pyc
em vez de .py
.
Como o pycache acelera a execução de scripts Python?
A pasta __pycache__
e seus arquivos .pyc
ajudam a acelerar a execução de scripts Python armazenando bytecode, que é uma versão pré-compilada de seu script. O bytecode é mais rápido para o Python executar do que o código fonte original, pois é um formato de nível inferior que está mais próximo do código de máquina.
Quando você executa um script Python, o interpretador precisa analisar o código fonte, convertê-lo em uma árvore de sintaxe abstrata (AST) e, em seguida, compilar esse AST em bytecode. Esse processo pode levar algum tempo, especialmente para scripts maiores.
Posso excluir a pasta pycache?
Sim, você pode excluir a pasta __pycache__
. Excluir esta pasta não afetará a execução de seus scripts Python. No entanto, da próxima vez que você executar seus scripts, o Python precisará recompilá-los em bytecode, o que pode diminuir um pouco a execução inicial. Isso ocorre porque o Python precisará recriar a pasta __pycache__
e os arquivos .pyc
contidos nela.
Se você estiver preocupado com a pasta __pycache__
poluindo o diretório do seu projeto, você pode usar um comando simples para excluir todas as pastas __pycache__
recursivamente. Veja como você pode fazer isso:
find . -type d -name __pycache__ -exec rm -r {} \+
Esse comando encontrará todos os diretórios chamados __pycache__
no diretório atual e em seus subdiretórios e os deletará.
Como desabilitar a criação de arquivos pycache em Python?
Embora a pasta __pycache__
e seus arquivos .pyc
possam ajudar a acelerar a execução de seus scripts Python, pode haver situações em que você deseja desabilitar sua criação. Por exemplo, você pode estar trabalhando em um pequeno script em que o tempo de compilação é negligenciável ou pode querer evitar poluir seu diretório de projeto com pastas __pycache__
.
Você pode desabilitar a criação de pastas __pycache__
e arquivos .pyc
definindo a variável de ambiente PYTHONDONTWRITEBYTECODE
. Você pode fazer isso diretamente no seu terminal com o seguinte comando:
export PYTHONDONTWRITEBYTECODE=1
Após executar este comando, o Python não criará mais pastas __pycache__
ou arquivos .pyc
até o final da sessão atual do seu terminal. Se você quiser tornar essa alteração permanente, pode adicionar a linha acima ao arquivo de inicialização do seu shell (por exemplo, ~/.bashrc
ou ~/.bash_profile
para o shell Bash).
Como ignorar os arquivos pycache no Git
Ao trabalhar com o Git, é comum ignorar certos arquivos ou diretórios que não precisam ser controlados pela versão. O diretório __pycache__
é um candidato ideal para isso, pois contém bytecode compilado que é específico para a máquina e não precisa ser compartilhado entre ambientes diferentes.
Para ignorar os diretórios __pycache__
no Git, você pode adicionar uma linha ao seu arquivo .gitignore
:
__pycache__/
Essa linha informa ao Git para ignorar todos os diretórios __pycache__
, não importando onde eles estejam localizados em seu projeto. Agora, quando você executar git status
, você verá que os diretórios __pycache__
e seu conteúdo não são mais listados como arquivos não rastreados.
O que acontece se eu excluir a pasta pycache?
Excluir a pasta __pycache__
não afetará a execução de seus scripts Python. A pasta __pycache__
não é necessária para executar scripts Python; ela apenas ajuda a acelerar a execução de scripts que foram executados anteriormente.
Quando você exclui a pasta __pycache__
e depois executa um script Python, o Python irá recompilar o script em bytecode e recriar a pasta __pycache__
e o arquivo .pyc
correspondente. Esse processo pode retardar um pouco a execução inicial do script, mas execuções subsequentes serão mais rápidas, pois o Python pode usar o bytecode armazenado no arquivo .pyc
.
Agora, vamos responder algumas perguntas frequentes sobre __pycache__
em Python.
FAQ
- Qual é o objetivo da pasta
__pycache__
em Python?
A pasta __pycache__
é criada pelo Python quando você executa um script. Ela contém arquivos .pyc
, que são versões compiladas de seus scripts Python. Esses arquivos estão em um formato chamado bytecode, que o Python pode executar mais rápido do que o código fonte original.
- Posso excluir a pasta
__pycache__
?
Sim, você pode excluir a pasta __pycache__
. A exclusão dessa pasta não afetará a execução de seus scripts Python. No entanto, da próxima vez que você executar seus scripts, o Python terá que recompilá-los em bytecode, o que pode retardar um pouco a execução inicial.
- Como posso ignorar arquivos
__pycache__
no Git?
Para ignorar os diretórios __pycache__
no Git, você pode adicionar a seguinte linha ao seu arquivo .gitignore
: __pycache__/
. Isso informa ao Git para ignorar todos os diretórios __pycache__
, não importando onde eles estejam localizados em seu projeto.