compileall
— 字节编译 Python 库
¶
源代码: Lib/compileall.py
此模块提供一些实用函数来支持安装 Python 库。这些函数编译目录树下的 Python 源文件。此模块可以用于在库安装时创建缓存字节码文件,即使用户没有库目录写入权限也可以使用它们。
此模块可以作为脚本工作 (使用 python -m compileall ) 以编译 Python 源代码。
directory
...
¶
file
...
¶
Positional arguments are files to compile or directories that contain source files, traversed recursively. If no argument is given, behave as if the command line was
-l <directories from sys.path>
.
-l
¶
Do not recurse into subdirectories, only compile source code files directly contained in the named or implied directories.
-f
¶
Force rebuild even if timestamps are up-to-date.
-q
¶
Do not print the list of files compiled, print only error messages.
-d
destdir
¶
Directory prepended to the path to each file being compiled. This will appear in compilation time tracebacks, and is also compiled in to the byte-code file, where it will be used in tracebacks and other messages in cases where the source file does not exist at the time the byte-code file is executed.
-x
regex
¶
regex is used to search the full path to each file considered for compilation, and if the regex produces a match, the file is skipped.
-i
list
¶
读取文件
list
and add each line that it contains to the list of files and directories to compile. If
list
is
-
,读取行从
stdin
.
-b
¶
Write the byte-code files to their legacy locations and names, which may overwrite byte-code files created by another version of Python. The default is to write files to their PEP 3147 locations and names, which allows byte-code files from multiple versions of Python to coexist.
3.2 版改变:
添加
-i
,
-b
and
-h
选项。
There is no command-line option to control the optimization level used by the
compile()
function, because the Python interpreter itself already provides the option:
python -O -m compileall
.
compileall.
compile_dir
(
dir
,
maxlevels=10
,
ddir=None
,
force=False
,
rx=None
,
quiet=False
,
legacy=False
,
optimize=-1
)
¶
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
.
若 ddir is given, it is prepended to the path to each file being compiled for use in compilation time tracebacks, and is also compiled in to the byte-code file, where it will be used in tracebacks and other messages in cases where the source file does not exist at the time the byte-code file is executed.
若 force is true, modules are re-compiled even if the timestamps are up to date.
若 rx is given, its search method is called on the complete path to each file considered for compilation, and if it returns a true value, the file is skipped.
若 quiet is true, nothing is printed to the standard output unless errors occur.
若 legacy is true, byte-code files are written to their legacy locations and names, which may overwrite byte-code files created by another version of Python. The default is to write files to their PEP 3147 locations and names, which allows byte-code files from multiple versions of Python to coexist.
optimize
specifies the optimization level for the compiler. It is passed to the built-in
compile()
函数。
3.2 版改变: 添加 legacy and optimize 参数。
compileall.
compile_file
(
fullname
,
ddir=None
,
force=False
,
rx=None
,
quiet=False
,
legacy=False
,
optimize=-1
)
¶
Compile the file with path fullname .
若 ddir is given, it is prepended to the path to the file being compiled for use in compilation time tracebacks, and is also compiled in to the byte-code file, where it will be used in tracebacks and other messages in cases where the source file does not exist at the time the byte-code file is executed.
若
rx
is given, its search method is passed the full path name to the file being compiled, and if it returns a true value, the file is not compiled and
True
被返回。
若 quiet is true, nothing is printed to the standard output unless errors occur.
若 legacy is true, byte-code files are written to their legacy locations and names, which may overwrite byte-code files created by another version of Python. The default is to write files to their PEP 3147 locations and names, which allows byte-code files from multiple versions of Python to coexist.
optimize
specifies the optimization level for the compiler. It is passed to the built-in
compile()
函数。
3.2 版新增。
compileall.
compile_path
(
skip_curdir=True
,
maxlevels=0
,
force=False
,
legacy=False
,
optimize=-1
)
¶
字节编译所有
.py
files found along
sys.path
。若
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
默认为
0
.
3.2 版改变: 添加 legacy and optimize 参数。
要强制重新编译所有
.py
文件在
Lib/
子目录及其所有子目录:
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)
另请参阅
py_compile