编译Python代码

-- TOC --

对,Python代码在执行之前,也是需要先编译的,不过是编译成Python特有的bytecode。

python作为一种解释执行的高级语言,在执行之前,是无需显式地编译的。Python解释器会在代码载入的时候,自动将python源码编译成python的byte code,然后执行。这样做的好处是,如果某个模块的源代码没有变化,下次载入的时候,就会加快速度。注意:只是加快载入的速度,而不是加快执行的速度!

我们常常见到的__pycache__目录,里面存放的就是编译成byte code之后的python代码。这个目录可以随意删除!

因此,python还是有编译这个概念的,只是一般情况下,我们用不到!一般情况下,编译的过程被python隐藏并自动化了。同时,我们也可以使用python标准库里的py_compile模块和compileall模块,来显式地编译python代码,得到.pyc或者.pyo文件(使用python -O优化编译)。如果只发布编译后的python byte code,可以起到适当的保密源代码的作用!

编译单个python文件

>>> import py_compile
>>> py_compile.compile('test.py')

或者:

$ python3 -m py_compile test.py

编译整个目录

>>> import compileall
>>> compileall.compile_dir('../src')

或者:

$ python3 -m compileall ../src

本文链接:https://cs.pynote.net/sf/python/202206131/

-- EOF --

-- MORE --