编译python源码

文件类型

  • py 源文件
  • pyc 编译后的文件
  • pyo 优化编译后的文件,可以通过python --help查看-O和-OO了解细节
  • pyw GUI模式下源码,调用pythonw.exe执行,如果程序不需要控制台窗口,可以新建一个pyw文件用于调用主pyc程序。pyw中只需要导入pyc程序即可。
  • pyd python库

pyc和pyd的区别?

        pyc是解释器生成的字节码文件,pyd是优化后的字节码文件,相比pyc,去掉了行号,断言,文档字符串等。

如何生成pyc

测试版本:python 2.7.5

测试系统:centos 7.9 1908

测试脚本test.py内容

print("test")

执行结果

python test.py
#没有任何文件生成
python -m py_compile test.py
#生成pyc文件
python  -O test.py 或者python -OO test.py
#没有任何文件生成
python  -O -m py_compile test.py
#生成pyo文件
python  -OO -m py_compile test.py
#生成pyo文件

其它编译方式

import py_compile
py_compile.compile("D:\\test.py")
import compileall
compileall.compile_dir(dirpath)
#dirpath可以是绝对目录,也可以是相对目录
python -m compileall  $dir
#编译dir目录下的文件

其它注意事项:

从python3.5开始,__pycache__目录下,就不会再有.pyo文件了 

取而代之的是:

python3 -O -m py_compile test.py
python3 -OO -m py_compile test.py
#结果
test.cpython-36.opt-1.pyc
test.cpython-36.opt-2.pyc

上一篇:将Yolov5的detect.py修改为可以直接调用的函数


下一篇:django报错