python编译pyc和pyo

pyc是python编译器编译后的字节码

pyo是python编译器优化编译后的字节码

官方的说法是pyc和pyo在程序的执行上并没有变快,只是在加载这些模块时变快。

并且pyo会在一些情况(很少的情况下)会发生功能上的错误。

pyo会去除asset和__doc__。

其实pyc和pyo很容易被反编译,所以又好多人问为什么python没有像c/c++那样的可以编译成很难被反编译的二进制级别的文件。

接下来说说怎么编译成pyc和pyo文件。

生成pyc文件

有2中方法生成pyc文件,py_compile或者compileall

命令如下:

python -m py_compile [PYTHONFILE]

python -m compileall [PYTHONFILE]

python -m compileall [DIRECTORY]

compileall 要比 py_compile功能强大,可以编译一个文件还可以编译整个目录,包括其子目录。

另外compileall还提供下面的选项:

-l

只编译当前目录,忽略器子目录

-f

强制重新编译

-q

只打印出错误,不打印编译的文件列表

-d destdir

编译文件的输出路径

-x regex

过滤器,用来选择什么样的文件需要被编译,regex为正则表达式

生成pyo文件

compileall是无法生成pyo文件的,只能使用py_compile。

命令如下:

python  -O -m py_compile [PYTHONFILE]

python -OO -m py_compile [PYTHONFILE]

一个O就会移除asset,2个OO就会将asset和__doc__都移除。

完。

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

留言

你的邮箱是保密的 必填的信息用*表示