Python编译py文件为pyc pyo pyd文件的方法

一般来说,当我们在发布系统的时候,希望上线的代码是安全可靠的,不希望别人能看到源代码,通常都会先提前编译好,然后进行发布,在python中,编译好的代码格式为 .pyc 文件


常见的python代码形式有如下几种:

.py  --python的源代码文件,程序内容可以用文本编辑器直接打开,代码可视

.pyc  – .py文件经过编译后产生的字节码文件,是二进制文件

.pyo  – .py文件经过优化后的执行文件

.pyd  – python的动态链接库文件


编译python代码为pyc文件的所应用的模块

1、python内置的py_compile模块可以把py文件编译为pyc文件或pyo文件;

方式一:py脚本形式


#办法一:
import py_compile
#加r前缀进行转义
py_compile.compile(r'D:\test.py')#py文件完整的路径.



方式二:命令行形式:

python -m py_compile xxx.py
# 注: 其中-m参数 就相当于py脚本中的import
# 这里的 -m py_compile 相当于上面的 import py_compile



内置的compileall模块可以把整个目录中的py文件编译为pyc或pyo文件;

方式一:py脚本形式:

仅编译目录:


import compileall
compileall.compile_dir('s1')


过滤文件,过滤掉不需要当前目录下不需要编译的文件,可利用正则表达式实现

import compileall
import re
compileall.compile_dir('s1',rx=re.compile(r'/\.txt'))



如果需要递归遍历目录,则需要添加参数。

当maxlevels = 0,不需要递归。

当maxlevels = 1,需要递归。

import compileall
import re
compileall.compile_dir('s1', maxlevels=0, rx=re.compile(r'/\.txt'))


仅选择需要编译的路径

import compileall
import sys
sys.path[:] = ['s1', 's2']
print 'sys.path =', sys.path
compileall.compile_path()


方式二:命令行模式

python -m compileall /dir/  # 生成目录下所有py文件对应的pyc文件