py_compile是一个stdlib模块,可以在给定的Python源代码下生成字节码。
很少需要它。
要编译Python 3源代码,必须使用它随附的py_compile版本,如果从命令行使用它,则不能使用Python 2.7的版本:
$ python3 -mpy_compile your_script.py
要更改pyc文件的默认存储位置,可以使用函数的
cfileparameter
。
py_compile.compile()
字节码会使脚本运行更快吗?
它可能(数量很少)。Python编译器没有做太多事情,因此速度很快。
这是一个字节代码以人类可读形式显示的示例:
>>> def f(o):... with o:... pass...>>> import dis >>> dis.dis(f) 20 LOAD_FAST 0 (o) 3 SETUP_WITH 5 (to 11) 6 POP_TOP 37 POP_BLOCK 8 LOAD_ConST 0 (None) >> 11 WITH_CLEANUP 12 END_FINALLY13 LOAD_ConST 0 (None) 16 RETURN_VALUE
所有繁重的工作都留给了python解释器,该解释器在运行时解释字节码。
还是仅用于分发?
该文档提供了一个用例:一个包含Python模块的共享目录,只有窗帘用户可以在其中编写。您可以禁用将字节码缓存到磁盘,以便可以使用存储在只读位置的py文件而没有相应的pyc文件。
为什么很少使用?
通常,pyc文件是通过构建/安装过程创建的。如果没有pyc文件,则可以在导入模块时即时创建它们:
$ python -c 'import some_module'



