本文出自“阿敏其人”简书博客,转载请注明出处。
文/阿敏其人
当我们的python文件被编译过,文件之间存在import关系,就会生成一个__pyc__
文件夹。
比如我们新建一个工程,里面一共两个py文件。
分别是ttt.py和imp.py
ttt.py里面就只有一个方法。
imp.py import了ttt。编译过后,我们会看见多了一个__pyc__
文件夹
.
imp.py
import ttt
ttt.sayHello()
内部
一、存在的意义
主要意义:加快启动速度
原因
Python 在解释源程序时分为两步:
- 第一步:将
源码
转为字节码
- 第二步:将
字节码
转换为机器码
pyc 文件是由 Python 解释器将 模块的源码 转换为 字节码。
(pyc,py代表pychon,c 是 compiled的含义,pyc即编译过的python文件 )
当我们的程序没有修改过,那么下次运行程序的时候,就可以跳过 从源码到字节码 的过程,直接加载 pyc 文件。
二、命令生成 pyc 文件
生成单个pyc文件
对于py文件,可以执行下面命令来生成pyc文件。
python -m test.py
另外一种方式是通过代码来生成pyc文件。
import py_compile
py_compile.compile('/path/test.py')
批量生成pyc文件
针对一个目录下所有的py文件进行编译。python提供了一个模块叫compileall,具体请看下面代码:
import compileall
compileall.compile_dir(r'/path')
这个函数的格式如下:
compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])
三、注意点
1、import过的文件才会自动生成 pyc文件。
2、pyc文件不可以直接看到源码,可以被反编译
- 3、
pyc的内容,是跟python的版本相关的,不同 版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的
END