Executando verificação de segurança...
8

Sobre o diretório __pycache__, vale lembrar que ele só guarda os arquivos de módulos que são importados.

Ou seja, suponha que eu rodo python meu_script.py e dentro dele tem um import meu_modulo. Então no diretório __pycache__ será gerado o arquivo correspondente ao meu_modulo.py (geralmente no formato arquivo-versão.pyc, então no meu caso o arquivo resultante seria __pycache__/meu_modulo.cpython-312.pyc já que estou usando Python 3.12). Mas não será gerado um arquivo correspondente ao meu_script.py.

Inclusive, se eu rodar o código do módulo diretamente (por exemplo, python meu_modulo.py em vez de rodar outro código que o importe), neste caso ele não é adicionado ao __pycache__.

Isso está descrito na documentação, que também mostra que vc pode adicionar manualmente qualquer arquivo ao __pycache__, usando o módulo py_compile. Ex:

import py_compile
py_compile.compile('arquivo.py')

Desta forma, vc pode adicionar qualquer arquivo ao __pycache__. Mas por padrão, ele terá apenas os módulos que são importados no código que estiver rodando.


Inclusive, na PEP 3147 (que definiu o mecanimo por trás do diretório __pycache__) tem um diagrama bem didático, e repare como o ponto inicial é um import:

Diagrama do mecanismo de importação de um módulo

Carregando publicação patrocinada...