31.11. compileall — Byte-compile Python libraries

Python v2.7.1

31.11. compileall — Byte-compile Python libraries

This module provides some utility functions to support installing Python libraries. These functions compile Python source files in a directory tree, allowing users without permission to write to the libraries to take advantage of cached byte-code files.

This module may also be used as a script (using the -m Python flag) to compile Python sources. Directories to recursively traverse (passing -l stops the recursive behavior) for sources are listed on the command line. If no arguments are given, the invocation is equivalent to -l sys.path. Printing lists of the files compiled can be disabled with the -q flag. In addition, the -x option takes a regular expression argument. All files that match the expression will be skipped.

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

Recursively descend the directory tree named by dir, compiling all .py files along the way. The maxlevels parameter is used to limit the depth of the recursion; it defaults to 10. If ddir is given, it is used as the base path from which the filenames used in error messages will be generated. If force is true, modules are re-compiled even if the timestamps are up to date.

If rx is given, it specifies a regular expression of file names to exclude from the search; that expression is searched for in the full path.

If quiet is true, nothing is printed to the standard output in normal operation.

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. The maxlevels and force parameters default to 0 and are passed to the compile_dir() function.

To force a recompile of all the .py files in the Lib/ subdirectory and all its subdirectories:

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('/[.]svn'), force=True)

See also

Module py_compile
Byte-compile a single source file.