如何生成pyc/pyo/pyd文件
Posted traditional
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何生成pyc/pyo/pyd文件相关的知识,希望对你有一定的参考价值。
# 一.如何生成pyc/pyo文件 # 1.通过编写代码生成 import py_compile # 参数如下 ‘‘‘ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1): file:要编译的源文件 cfile:编译之后的pyc文件路径和文件名,默认直接在file后面加上c或者o(会保存在当前目录的__pycache__文件夹下), pyo相当于优化之后的pyc dfile:把在错误信息中显示的file用dfile替换 doraise:True或False,如果为True,那么文件编译出错的话,则会引发一个PyCompileError。 为False的话,编译出错会显示在sys.stderr中 optimize:用于编译的优化级别,有效的值为-1,0,1,2。-1表示当前解释器的优化级别 使用命令行的时候如果设置优化级别,通过-O来设置。用于生成pyo文件了。 说白了后面几个参数基本上用不到 ‘‘‘ py_compile.compile("your_py_file") # 2.通过命令行生成 # python (-O) -m py_compile your_py_file.py ,加上-O表示优化 ‘‘‘ 有的时候我们不想只编译一个py文件,而是编译一个文件夹下的所有py文件怎么办呢? python还为我们提供了一个模块 ‘‘‘ import compileall # 参数如下 ‘‘‘ def compile_dir(dir, maxlevels=10, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, workers=1): dir:文件夹路径 maxlevels:递归编译的的子目录的层数,默认是把10层子目录的py文件编译成pyc ddir:和上面的dfile类似 force:如果为True,将强制编译为pyc,即便现在pyc文件是最新的,依旧会编译一次 rx:一个正则表达式,可以排除掉不想编译的目录,只编译想要的目录 quiet:给我安静点,编译之后不会在标准输出中,打印信息 ‘‘‘ compileall.compile_dir("your_dir") # 同样可以使用命令行 # python -m compileall your_dir
我们来编译一个试试
首先我在foo.py中定义了一个函数fuck,然后在bar.py中进行编译,这里就不使用命令行了,效果是一样的。
会发现在当前目录下的__pycache__目录中多出了一个文件,正是刚才对编译的字节码文件。我们把它移动到当前目录来,并把foo.py删除,并把名字改一下,否则无法导入
发现依旧执行成功了,py文件和pyc文件可以按照相同的方式导入
--------------------------------------------------------------------
以上是关于如何生成pyc/pyo/pyd文件的主要内容,如果未能解决你的问题,请参考以下文章
Python文件.py||.pyi||.pyc||.pyo||.pyd等各种文件后缀区别
Python文件.py||.pyi||.pyc||.pyo||.pyd等各种文件后缀区别
Python文件.py||.pyi||.pyc||.pyo||.pyd等各种文件后缀区别