32.11. compileall — 字节编译 Python 库 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/compileall
跳转至:导航、​搜索

32.11. 编译所有 — 字节编译 Python 库

源代码: :source:`Lib/compileall.py`



该模块提供了一些实用函数来支持安装 Python 库。 这些函数在目录树中编译 Python 源文件。 该模块可用于在库安装时创建缓存的字节码文件,这使得它们甚至可供没有库目录写入权限的用户使用。

32.11.1。 命令行使用

该模块可以作为脚本(使用 python -m compileall)来编译 Python 源代码。

directory ...

file ...

位置参数是要编译的文件或包含源文件的目录,递归遍历。 如果没有给出参数,则表现得就像命令行是 -l <directories from sys.path>
-l
不要递归到子目录,只编译直接包含在命名或隐含目录中的源代码文件。
-f
即使时间戳是最新的,也强制重建。
-q
不要打印编译的文件列表,只打印错误消息。
-d destdir
被编译的每个文件的路径前面的目录。 这将出现在编译时回溯中,并且也被编译到字节码文件中,在执行字节码文件时源文件不存在的情况下,它将在回溯和其他消息中使用。
-x regex
regex 用于搜索考虑编译的每个文件的完整路径,如果 regex 产生匹配,则跳过该文件。
-i list
读取文件 list 并将其包含的每一行添加到要编译的文件和目录列表中。 如果 list-,从 stdin 读取行。

2.7 版本变化: 增加了 -i 选项。


32.11.2. 公共职能

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

递归下降以dir命名的目录树,一路编译所有.py文件。

maxlevels参数用于限制递归的深度; 默认为 10

如果给出了 ddir,它会被添加到每个正在编译的文件的路径中,以用于编译时回溯,并且也会被编译到字节码文件中,在那里它将被用于回溯和其他在执行字节码文件时源文件不存在的情况下的消息。

如果 force 为真,即使时间戳是最新的,模块也会重新编译。

如果给出 rx,则在考虑编译的每个文件的完整路径上调用其搜索方法,如果返回真值,则跳过该文件。

如果 quiet 为真,则除非发生错误,否则不会向标准输出打印任何内容。

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

使用路径 全名 编译文件。

如果给出了 ddir,它会被添加到被编译文件的路径以供编译时回溯使用,并且也会被编译到字节码文件中,在那里它将被用于回溯和其他在执行字节码文件时源文件不存在的情况下的消息。

如果给出了 rx,它的搜索方法将传递到正在编译的文件的完整路径名,如果返回真值,则不编译该文件并返回 True

如果 quiet 为真,则除非发生错误,否则不会向标准输出打印任何内容。

2.7 版中的新功能。

compileall.compile_path([skip_curdir[, maxlevels[, force]]])
字节编译沿 sys.path 找到的所有 .py 文件。 如果 skip_curdir 为 true(默认值),则当前目录不包含在搜索中。 所有其他参数都传递给 compile_dir() 函数。 请注意,与其他编译函数不同,maxlevels 默认为 0

强制重新编译 Lib/ 子目录及其所有子目录中的所有 .py 文件:

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
字节编译单个源文件。