32.11. compileall —字节编译 Python 库

源代码: Lib/compileall.py


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

32.11.1. 命令行使用

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

在 2.7 版中进行了更改:添加了-i选项。

32.11.2. 公共职能

如果给定了* ddir *,它会被添加到要编译的每个文件的路径中,以供在编译时回溯中使用,并且还会被编译为字节码文件,在以下情况下,它将在回溯和其他消息中使用:执行字节码文件时源文件不存在。

如果* force *为 true,则即使时间戳是最新的,也将重新编译模块。

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

如果* quiet *为 true,则除非发生错误,否则什么都不会打印到标准输出。

如果给定了* ddir *,它会被放在要编译的文件的路径中,以供在编译时回溯中使用,并且还会被编译为字节码文件,在以下情况下,它将在回溯和其他消息中使用:执行字节码文件时源文件不存在。

如果给定* rx *,则其搜索方法会将完整路径名传递给正在编译的文件,如果返回的是 true 值,则不编译该文件,并返回True

如果* quiet *为 true,则除非发生错误,否则什么都不会打印到标准输出。

2.7 版的新Function。

要强制重新编译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)

See also

  • Module py_compile

  • 字节编译单个源文件。

首页