ref: a7c01127f9749fe471367c6461cde357403cc3b3
dir: /sys/src/cmd/python/Doc/lib/libcompileall.tex/
\section{\module{compileall} --- Byte-compile Python libraries} \declaremodule{standard}{compileall} \modulesynopsis{Tools for byte-compiling all Python source files in a directory tree.} 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. The source file for this module may also be used as a script to compile Python sources in directories named on the command line or in \code{sys.path}. \begin{funcdesc}{compile_dir}{dir\optional{, maxlevels\optional{, ddir\optional{, force\optional{, rx\optional{, quiet}}}}}} Recursively descend the directory tree named by \var{dir}, compiling all \file{.py} files along the way. The \var{maxlevels} parameter is used to limit the depth of the recursion; it defaults to \code{10}. If \var{ddir} is given, it is used as the base path from which the filenames used in error messages will be generated. If \var{force} is true, modules are re-compiled even if the timestamps are up to date. If \var{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 \var{quiet} is true, nothing is printed to the standard output in normal operation. \end{funcdesc} \begin{funcdesc}{compile_path}{\optional{skip_curdir\optional{, maxlevels\optional{, force}}}} Byte-compile all the \file{.py} files found along \code{sys.path}. If \var{skip_curdir} is true (the default), the current directory is not included in the search. The \var{maxlevels} and \var{force} parameters default to \code{0} and are passed to the \function{compile_dir()} function. \end{funcdesc} To force a recompile of all the \file{.py} files in the \file{Lib/} subdirectory and all its subdirectories: \begin{verbatim} 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) \end{verbatim} \begin{seealso} \seemodule[pycompile]{py_compile}{Byte-compile a single source file.} \end{seealso}