一、前言
一般来说,当我们在发布系统的时候,希望上线的代码是安全可靠的,不希望别人能看到源代码,通常都会先提前编译好,然后进行发布,在python中,编译好的代码格式为 .pyc 文件
常见的python代码形式有如下几种:
.py --python的源代码文件,程序内容可以用文本编辑器直接打开,代码可视
.pyc – .py文件经过编译后产生的字节码文件,是二进制文件
.pyo – .py文件经过优化后的执行文件
.pyd – python的动态链接库文件
二、编译python代码为pyc文件的所应用的模块
1、python内置的py_compile模块可以把py文件编译为pyc文件或pyo文件;
方式一:py脚本形式:
# -*- coding: utf-8 -*-
#python 27
#python之模块py_compile用法(将py文件转换为pyc文件);二进制文件,是由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
2、内置的compileall模块可以把整个目录中的py文件编译为pyc或pyo文件;
方式一:py脚本形式:
2.1、 仅编译目录:
import compileall
compileall.compile_dir('s1')
2.2、过滤文件,过滤掉不需要当前目录下不需要编译的文件,可利用正则表达式实现
import compileall
import re
compileall.compile_dir('s1',rx=re.compile(r'/\.txt'))
2.3、如果需要递归遍历目录,则需要添加参数。maxlevels
当maxlevels = 0,不需要递归。
当maxlevels = 1,需要递归。
import compileall
import re
compileall.compile_dir('s1', maxlevels=0, rx=re.compile(r'/\.txt'))
2.4、仅选择需要编译的路径
import compileall
import sys
sys.path[:] = ['s1', 's2']
print 'sys.path =', sys.path
compileall.compile_path()
方式二:命令行模式
python -m compileall /dir/ # 生成目录下所有py文件对应的pyc文件