Skip to content

Entendendo o pycache em Python: Tudo que você precisa saber

Updated 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.

PyGWalker para visualização de dados (opens in a new tab)

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

  1. 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.

  1. 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.

  1. 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.