compileall
compileall - 字节编译Python库
源代码:
Lib / compileall.py
该模块提供了一些实用功能来支持安装Python库。这些函数在目录树中编译Python源文件。此模块可用于在安装库时创建缓存的字节码文件,这使得即使对库目录没有写入权限的用户也可使用该模块。
1.命令行使用
该模块可以作为脚本(使用python -m compileall
)来编译Python源代码。
directory ...file ...
位置参数是要编译的文件或包含源文件的目录,递归遍历。如果没有给出参数,就像命令行一样-l <directories from sys.path>。
-l
不要递归到子目录中,只编译直接包含在指定或隐含目录中的源代码文件。
-f
即使时间戳是最新的,也强制重建。
-q
不要打印已编译文件的列表,只打印错误消息。
-d destdir
预编译到正在编译的每个文件的路径的目录。这将出现在编译时间回溯,也被编译到字节码文件,它会在回溯和其他消息可以使用在情况下,源文件根本不执行字节码文件的时间存在。
-x regex
正则表达式用于搜索考虑编译的每个文件的完整路径,如果正则表达式产生匹配,则跳过文件。
-i list
读取文件list
并将其包含的每一行添加到要编译的文件和目录列表中。如果list
是-
,则从中读取行stdin
。
在版本2.7中更改:添加了该-i
选项。
2.公共职能
compileall.compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])
递归地下降由dir
命名的目录树,.py
沿途编译所有文件。
所述maxlevels
参数用于限制递归的深度; 它默认为10
。
如果给出了ddir
,则它被预
编译为每个被编译以用于编译时间回溯的文件的路径,并且还被编译到字节码文件中,在该文件中将用于回溯和其他消息,文件在执行字节码文件时不存在。
如果force
为真,即使时间戳是最新的,模块也会重新编译。
如果给出rx
,则会在考虑编译的每个文件的完整路径上调用其搜索方法,如果它返回true值,则会跳过该文件。
如果quiet
为真,则除非出现错误,否则不会在标准输出上打印任何内容。
compileall.compile_file(fullname[, ddir[, force[, rx[, quiet]]]])
用路径全名
编译文件。
如果给出了ddir
,则它将被编译为正在编译的文件的路径作为编译时间回溯的前缀,并且还会被编译到字节码文件中,在该文件中将用于回溯和其他消息,文件在执行字节码文件时不存在。
如果给出了rx
,它的搜索方法会将完整路径名称传递给正在编译的文件,如果它返回一个真值,则该文件不会被编译并返回True
。
如果quiet
为真,则除非出现错误,否则不会在标准输出上打印任何内容。
2.7版本的新功能。
compileall.compile_path([skip_curdir[, maxlevels[, force]]])
字节编译所有.py
找到的文件sys.path
。如果skip_curdir
为true(默认值),则当前目录不包含在搜索中。所有其他参数都传递给该compile_dir()
函数。请注意,与其他编译函数不同,maxlevels
默认为0
。
强制重新编译子目录及其所有子目录中的所有.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)
扩展内容
Module
py_compile
字节编译单个源文件。