32.11. compileall — Compilar bibliotecas do Python para bytecode

Código Fonte: Lib/compileall.py


Este módulo fornece algumas funções utilitárias para dar suporte à instalação de bibliotecas Python. Essas funções compilam arquivos fonte Python em uma árvore de diretórios. Este módulo pode ser usado para criar os arquivos de bytecodes em cache no momento da instalação da biblioteca, o que os torna disponíveis para uso mesmo por usuários que não têm permissão de gravação nos diretórios da biblioteca.

32.11.1. Uso na linha de comando

Este módulo pode funcionar como um script (usando python -m compileall) para compilar fontes do Python.

directory ...
file ...

Argumentos posicionais são arquivos a serem compilados ou diretórios que contêm arquivos de origem, percorridos recursivamente. Se nenhum argumento for fornecido, comporta-se como se a linha de comando fosse -l <diretórios do sys.path>.

-l

Não atua recursivamente em subdiretórios, apenas compila arquivos de código-fonte diretamente contidos nos diretórios nomeados ou implícitos.

-f

Força a recompilação, mesmo que os carimbos de data e hora estejam atualizados.

-q

Do not print the list of files compiled, print only error messages.

-d destdir

Diretório anexado ao caminho de cada arquivo que está sendo compilado. Isso aparecerá nos tracebacks em tempo de compilação e também será compilado no arquivo de bytecode, onde será usado em tracebacks e outras mensagens nos casos em que o arquivo de origem não exista no momento em que o arquivo de bytecode for executado.

-x regex

A expressão regular regex é usada para pesquisar o caminho completo para cada arquivo considerado para compilação e, se a regex produzir uma correspondência, o arquivo será ignorado.

-i list

Lê o arquivo list e adicione cada linha que ele contém à lista de arquivos e diretórios a serem compilados. Se list for -, lê as linhas do stdin.

Alterado na versão 2.7: Added the -i option.

32.11.2. Funções públicas

compileall.compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])

Recursively descend the directory tree named by dir, compiling all .py files along the way.

O parâmetro maxlevels é usado para limitar a profundidade da recursão; o padrão é 10.

Se ddir for fornecido, ele será anexado ao caminho de cada arquivo que está sendo compilado para uso em tracebacks em tempo de compilação e também será compilado no arquivo de bytecode, onde será usado em tracebacks e outras mensagens nos casos em que o arquivo de origem não existe no momento em que o arquivo de bytecode é executado.

Se force for verdadeiro, os módulos serão recompilados, mesmo que os carimbos de data e hora estejam atualizados.

Se rx for fornecido, seu método de pesquisa será chamado no caminho completo para cada arquivo considerado para compilação e, se retornar um valor verdadeiro, o arquivo será ignorado.

If quiet is true, nothing is printed to the standard output unless errors occur.

compileall.compile_file(fullname[, ddir[, force[, rx[, quiet]]]])

Compile the file with path fullname.

Se ddir for fornecido, ele será anexado ao caminho do arquivo que está sendo compilado para uso em rastreamentos em tempo de compilação e também será compilado no arquivo de bytecode, onde será usado em tracebacks e outras mensagens nos casos em que o arquivo fonte não existe no momento em que o arquivo de bytecode é executado.

Se rx for fornecido, seu método de pesquisa passará o nome do caminho completo para o arquivo que está sendo compilado e, se retornar um valor verdadeiro, o arquivo não será compilado e True será retornado.

If quiet is true, nothing is printed to the standard output unless errors occur.

Novo na versão 2.7.

compileall.compile_path([skip_curdir[, maxlevels[, force]]])

Byte-compile all the .py files found along sys.path. If skip_curdir is true (the default), the current directory is not included in the search. All other parameters are passed to the compile_dir() function. Note that unlike the other compile functions, maxlevels defaults to 0.

Para forçar uma recompilação de todos os arquivos .py no subdiretório Lib/ e todos os seus subdiretórios:

import compileall

compileall.compile_dir('Lib/', force=True)

# Perform same compilation, excluding files in .svn directories.
import re
compileall.compile_dir('Lib/', rx=re.compile(r'[/\\][.]svn'), force=True)

Ver também

Módulo py_compile

Compila para bytecode um único arquivo fonte.