\section{\module{py_compile} --- Compile Python source files} % Documentation based on module docstrings, by Fred L. Drake, Jr. % \declaremodule[pycompile]{standard}{py_compile} \modulesynopsis{Compile Python source files to byte-code files.} \indexii{file}{byte-code} The \module{py_compile} module provides a function to generate a byte-code file from a source file, and another function used when the module source file is invoked as a script. Though not often needed, this function can be useful when installing modules for shared use, especially if some of the users may not have permission to write the byte-code cache files in the directory containing the source code. \begin{excdesc}{PyCompileError} Exception raised when an error occurs while attempting to compile the file. \end{excdesc} \begin{funcdesc}{compile}{file\optional{, cfile\optional{, dfile\optional{, doraise}}}} Compile a source file to byte-code and write out the byte-code cache file. The source code is loaded from the file name \var{file}. The byte-code is written to \var{cfile}, which defaults to \var{file} \code{+} \code{'c'} (\code{'o'} if optimization is enabled in the current interpreter). If \var{dfile} is specified, it is used as the name of the source file in error messages instead of \var{file}. If \var{doraise} is true, a \exception{PyCompileError} is raised when an error is encountered while compiling \var{file}. If \var{doraise} is false (the default), an error string is written to \code{sys.stderr}, but no exception is raised. \end{funcdesc} \begin{funcdesc}{main}{\optional{args}} Compile several source files. The files named in \var{args} (or on the command line, if \var{args} is not specified) are compiled and the resulting bytecode is cached in the normal manner. This function does not search a directory structure to locate source files; it only compiles files named explicitly. \end{funcdesc} When this module is run as a script, the \function{main()} is used to compile all the files named on the command line. \begin{seealso} \seemodule{compileall}{Utilities to compile all Python source files in a directory tree.} \end{seealso}