py_compile —编译 Python 源文件

源代码: Lib/py_compile.py


py_compile模块提供了从源文件生成字节码文件的Function,以及在将模块源文件作为脚本调用时使用的另一个Function。

尽管并不经常需要,但此Function在安装模块以供共享使用时很有用,尤其是在某些用户可能无权在包含源代码的目录中写入字节码缓存文件的情况下。

如果* cfile *变为(明确指定或计算)的路径是符号链接或非常规文件,则将引发FileExistsError。这是作为警告,如果允许导入将字节编译的文件写入那些路径,则导入会将这些路径转换为常规文件。这是使用文件重命名将finally的字节编译文件放置到位以防止并发文件写入问题的导入的副作用。

在版本 3.2 中更改:将* cfile 的默认值更改为 PEP 3147兼容。先前的默认值为 file * 'c'(如果启用了优化则为'o')。还添加了* optimize *参数。

在版本 3.4 中进行了更改:更改了代码以将importlib用于字节代码缓存文件写入。这意味着文件创建/写入语义现在与importlib的内容匹配,例如权限,写和移动语义等。还添加了警告,如果* cfile *是符号链接或非常规文件,则会引发FileExistsError

在 3.7 版中进行了更改:如在 PEP 552中指定的那样,添加了* invalidation_mode 参数。如果设置了 SOURCE_DATE_EPOCH环境变量,则 invalidation_mode *将被强制为PycInvalidationMode.CHECKED_HASH

在版本 3.7.2 中进行了更改: SOURCE_DATE_EPOCH环境变量不再覆盖* invalidation_mode *参数的值,而是确定其默认值。

在 3.8 版中进行了更改:添加了* quiet *参数。

3.7 版中的新Function。

.pycs由 Python 外部的某些系统(例如构建系统)保持最新时,此选项很有用。

在版本 3.2 中更改:添加了对'-'的支持。

当此模块作为脚本运行时,main()用于编译在命令行上命名的所有文件。如果其中一个文件无法编译,则退出状态为非零。

See also

  • Module compileall

  • 编译目录树中所有 Python 源文件的 Util。

首页